@borisovdenis

Как в django model отключить username у пользователя?

Для нашего проекта было необходимо переопределить модель пользователя и добавить некоторые поля и избавится от некоторых. Избавиться нужно от username, потому что хотим сделать регистрацию и авторизацию по почте. Аутентификацию уже переписал - работает! Пользователя заходит по почте и паролю, все отлично. Но при регистрации вылетает следующая ошибка.
AttributeError: 'AnonymousUser' object has no attribute 'email'


И если хотим обновить данные пользователя то вылетает ошибки типа поле username не может быть пустым и т.д.

Вот так выглядит дополненная модель пользователя:
class CustomUser(AbstractUser, UpdateMixin):
    """
        Extension of standard user model.
        Added:
        --- phone number
        --- avatar
        --- chat_id
    """
    first_name = models.CharField(max_length=30, blank=False, validators=[validate_not_empty_filed])
    last_name = models.CharField(max_length=30, blank=False, validators=[validate_not_empty_filed])
    email = models.EmailField(blank=False, unique=True, validators=[validate_email_field])
    avatar = models.ImageField(upload_to='users_avatars/', blank=True, max_length=1000)
    # телефон хранится в формате +7*********
    phone = models.CharField(max_length=12, blank=True, validators=[validate_phone_field])
    # id чата с ботом в телеграме
    chat_id = models.CharField(max_length=15, blank=True, validators=[validate_telegram_chat_id_field])

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name']

    class Meta:
        managed = True

    # дальше идут методы модели


Вопрос: как деактивировать username?
  • Вопрос задан
  • 1006 просмотров
Пригласить эксперта
Ответы на вопрос 1
@pyHammer
Сейчас в любой новый проект ложу собственное приложение account в котором изменил USERNAME_FIELD на email и в settings прописываю AUTH_USER_MODEL = 'account.User'. Это избавляет от проблем с масштабированием, так как на уже действующий проект сложно прикрутить или изменить авторизацию. Всегда избавляюсь от этого поля по возможности в пользу email, но если нужно оставить его то все равно для авторизации использую email. Если интересно могу выложить на github это приложение
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы