#python #python-3.x #django #django-models
#python #python-3.x #django #django-модели
Вопрос:
Я знаю, что есть способ расширить пользовательскую модель в Django вместе с ее приложением аутентификации. Есть ли способ использовать адрес электронной почты в качестве имени пользователя, а также создать идентификатор пользователя в качестве первичного ключа?
Комментарии:
1. На самом деле это задокументировано в расширении существующей модели пользователя или замене пользовательской модели пользователя и компромиссах между этими вариантами.
Ответ №1:
Как уже говорил Кросби, вы должны написать свою модель таким образом, добавив что-то дополнительное:
class User(AbstractUser):
user_id = models.IntegerField(primary_key=True, ...)
email = models.EmailField(unique=True)
USERNAME_FIELD = 'email'
Переопределение поля электронной почты и превращение его в уникальное поле избавит вас от необходимости кодирования в view или где-либо еще, чтобы не допускать дублирования электронных писем.
Комментарии:
1. Будет ли это расширять существующую пользовательскую модель?
2. Спасибо, это было действительно полезно!
Ответ №2:
Да, установите USERNAME_FIELD
значение email.
По умолчанию вы уже можете использовать pk
поле (или id
) в качестве идентификатора пользователя. Если вам нужно что-то конкретное, создайте поле с primary_key=True
помощью .
class User(AbstractUser):
your_own_identifier = models.IntegerField(primary_key=True, ...)
USERNAME_FIELD = 'email'
Комментарии:
1. Я попробовал это сейчас, и это работает так, как вы сказали, спасибо!