Настройка модели пользователя в Django - PullRequest
0 голосов
/ 04 марта 2020

Я хочу отредактировать модель пользователя в admin.py, но не могу понять, как я могу это сделать? Вот изображение панели администратора модели пользователя

Может кто-нибудь помочь мне? Я хочу добавить несколько настраиваемых полей в модель User.

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Вы можете сделать это, расширив AbstractUser от django.

# models.py

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import gettext_lazy as _


class User(AbstractUser):
    EMAIL_FIELD = 'email'
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

    email = models.EmailField(
        _('email address'),
        unique=True,
        blank=True
    )
    cellphone = models.CharField(
        _('cell phone'),
        max_length=20,
        null=True, blank=True
    )

Затем вам также необходимо указать эту пользовательскую модель в ваших настройках. Укажите путь к пользовательской модели, которую вы только что создали. <app_name>.<ModelClassName>

# settings.py

AUTH_USER_MODEL = 'users.User'

Наконец, ваш администратор также должен унаследовать от Django default UserAdmin, если вы хотите сэкономить свое время на всех хлопотах по созданию некоторых методов, которые они уже создали. Теперь вы можете редактировать администратор пользователя так, как вам нужно, также используя все существующие функции администратора.

# admin.py

from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin as OrigUserAdmin

User = get_user_model()


@admin.register(User)
class UserAdmin(OrigUserAdmin):
  list_display = (
    'id', 'first_name', 'last_name', 'username', 'email', 'is_active'
  )
1 голос
/ 04 марта 2020

используйте модель «AbstractUser» для расширения предопределенной пользовательской модели в Django.

, тогда мы легко добавим какое-то поле или добавим дополнительную информацию в пользовательскую модель.

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)

Затем мы необходимо обновить наш файл settings.py, определяющий свойство AUTH_USER_MODEL.

AUTH_USER_MODEL = 'core.User'

перейдите по этой ссылке для получения дополнительной информации: - https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

...