所以我创建了一个AbstractBaseUser,当我去添加一个超级用户时,我收到一个错误:
class MyUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
donator = models.DateTimeField()
USERNAME_FIELD = 'email'
objects = UserManager()
def __str__(self):
return self.email
@property
def is_staff(self):
return self.is_admin
我只关注过教程,所以我不确切知道自己在做什么。我看过这里的无数帖子&文档,似乎没有一个对我有用。我只是不断收到这个错误:
TypeError: create_superuser() takes exactly 4 arguments (3 given)
有什么想法吗?
答案 0 :(得分:0)
这是我的MyUserManager类,MyUser类现在也指向它。
class MyUserManager(BaseUserManager):
def create_user(self, email, date_of_birth, password=None):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=self.normalize_email(email),
date_of_birth=date_of_birth,
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, date_of_birth, password):
"""
Creates and saves a superuser with the given email, date of
birth and password.
"""
user = self.create_user(email,
password=password,
date_of_birth=date_of_birth
)
user.is_admin = True
user.save(using=self._db)
return UserWarning
我直接从Django文档中删除了这个,所以我不认为这是问题所在,或者是它?
答案 1 :(得分:0)
这个问题确实存在于经理人手中。您已覆盖create_superuser
方法以采用其他参数date_of_birth
。但Django的createperper命令对此没有任何了解,所以它只传递了正常的三个参数。
查看the code for the command,看起来用户模型的REQUIRED_FIELDS属性中的任何内容都将传递给create_superuser。
确实,看code you are copying,你错过了一条线:
REQUIRED_FIELDS = ['date_of_birth']