Как настроить модель пользователя в 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
Или вот этот:
Из документации 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