Настройка Django Admin Добавление пользователя с пустым паролем

Я создаю веб-приложение Django с настраиваемой политикой аутентификации пользователей: пароль есть только у суперпользователя, а идентификатором пользователя является поле электронной почты. Пользователи будут входить в систему только по протоколу OAuth, поэтому мне не нужно хранить для них пароли. Я создал пользовательского пользователя, переопределив класс AbstractBaseUser.

Есть ли способ разрешить интерфейсу Django Admin добавлять/редактировать пользователей с пустым полем пароля (непригодный пароль)?

Спасибо.

Добавьте следующую строку кода в вашу модель пользовательского пользователя:

password = models.CharField(_('password'), max_length=128 , blank=True, null=True)

Это позволит Django Admin разрешить добавление пользователя без пароля.

class UserAccountManager(BaseUserManager):

def _create_user(self, username, password, is_staff, is_superuser, **extra_fields):
    if not username:
        raise ValueError('Username is required.')
    now = timezone.now()
    username = self.model.normalize_username(username)
    user = self.model(
        username=username,
        is_staff=is_staff,
        is_active=True,
        is_superuser=is_superuser,
        last_login=now,
        date_joined=now,
        **extra_fields
    )
    user.set_password(password)
    user.save(using=self._db)
    return user

def create_user(self, username=None, password=None, **extra_fields):
    return self._create_user(username, password, False, False, **extra_fields)

def create_superuser(self, username, password, **extra_fields):
    user = self._create_user(username, password, True, True, **extra_fields)
    user.save(using=self._db)
    return user
Вернуться на верх