我试图在Django创建一个staff用户UserModel.objects.create_user(username="A", email="a@a.com", password="a", is_staff=True)
但在Django的用户管理器中,它说class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, username, email, password,
is_staff, is_superuser, **extra_fields):
"""
Creates and saves a User with the given username, email and password.
"""
if not username:
raise ValueError('The given username must be set')
email = self.normalize_email(email)
user = self.model(username=username, email=email,
is_staff=is_staff, is_superuser=is_superuser,
**extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, username, email=None, password=None, **extra_fields):
return self._create_user(username, email, password, False, False,
**extra_fields)
def create_superuser(self, username, email, password, **extra_fields):
return self._create_user(username, email, password, True, True,
**extra_fields)
因此,当试图设置is_staff = False时,它将始终使用is_staff = True覆盖此字段,除非我使用create_superuser而不是create_user;但是,create_superuser也设置is_superuser = True。
他们忘记在Django中创建方法了吗?:-)