Как настроить модель пользователя в django

Я хочу добавить поле к модели пользователя Django

example(in models.py:

)
from django.contrib.auth.models import User

#I want to add code here that customizes the user model fields

как я могу это сделать?

Возможно, это поможет вам в принятии решения о том, как действовать дальше: https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

Или вот этот:

Как расширить пользовательскую модель Django

Из документации User является супермножеством модели AbstractUser. Где модель User не имеет никакого дополнительного поля.

выдержка из документации:

class User(AbstractUser):
    """
    Users within the Django authentication system are represented by this
    model.

    Username, password and email are required. Other fields are optional.
    """
    class Meta(AbstractUser.Meta):
        swappable = 'AUTH_USER_MODEL'

Поэтому ничто не может помешать вам наследовать AbstractUser в другую модель и добавить некоторые поля по вашему желанию:

from django.contrib.auth.models import AbstractUser

class MyCustomUser(AbstractUser): # <----- you will inherit all User fields
    field_one = models.CharField(...)
    some_relation = models.ForeignKey(MyModel, ...)
    . . .

Таким образом вы добавите больше полей в свою собственную настраиваемую модель пользователя.

Кроме того, вы можете видеть, что его можно поменять местами AUTH_USER_MODEL, что необходимо указать, изменив модель User как стандартную модель аутентификации на вашу MyCustomUser.

При внимательном рассмотрении модели User в ней определены подклассы Meta, которые позволяют изменить стандартную модель User для вашей собственной модели:

   . . .
    class Meta(AbstractUser.Meta):
        swappable = 'AUTH_USER_MODEL' # <-----

Поэтому, как только вы создали свою модель MyCustomUser и перенесли ее, перейдите в раздел settings.py и добавьте в него следующий код:

AUTH_USER_MODEL = 'myapp.MyCustomUser'

Теперь ваша пользовательская модель пользователя распознается Django как стандартная модель аутентификации с вашими пользовательскими полями.

В этой статье рассказывается о том, как расширить стандартную модель пользователя, которую предоставляет django, и это может помочь, также есть и другие материалы, связанные с django, касающиеся модели пользователя

https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html

Вернуться на верх