Настройка 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