类型错误:create_superuser() 缺少 3 个必需的位置参数:

当我尝试使用终端创建新的超级用户时出现以下错误。

TypeError: create_superuser() missing 3 required positional arguments: 'first_name', 'last_name', and 'location'

我在下面的评论中关注了另一个 stackoverflow 页面。在该页面中,它坚持创建一个 create_superuser 函数,user.save(using=self._db) 但此代码仍有错误,

如何使用“first_name”、“last_name”和“location”而不提供任何默认值。

first_name 、 last_name 和 location 是最大长度 = 30 的 CharField 并且它可以有空值。

在这个自定义用户模型中,用户名被替换为 mobile_no,使其在 User 类中唯一。


胡子哥哥
浏览 264回答 2
2回答

喵喔喔

此代码适用于上述情况class UserManager(BaseUserManager):    def create_user(self, mobile_no, role, password=None):        """        Creates and saves a User with the given email and password.        """        if not mobile_no:            raise ValueError('Users must have an Mobile No')        user = self.model(            mobile_no=mobile_no,        )        user.set_password(password)        user.activated=True        user.save(using=self._db)        return user    def create_superuser(self, mobile_no, role, password):        """         Creates and saves a superuser with the given email and password.        """        user = self.create_user(mobile_no, role=role,                                password=password                                )        user.is_admin = True        user.activated=True        user.save(using=self._db)        return user    def create_staffuser(self, mobile_no, role, password):        """         Creates and saves a staffuser with the given email and password.        """        user = self.create_user(mobile_no, role=role,                                password=password                                )        user.is_staff = True        user.activated=True        user.save(using=self._db)        return userclass Users(AbstractBaseUser, PermissionsMixin):    object = UserManager()    mobile_no = models.IntegerField(_('MobNumber'), null=True, blank=True,unique=True)    email = models.EmailField(_('Email'), max_length=75, null=False, blank=False)    first_name = models.CharField(_('FirstName'), max_length=50, null=True, blank=True)    last_name = models.CharField(_('LastName'), max_length=70, null=True, blank=True)    role = models.CharField(_('Role'), max_length=70, null=True, blank=True)    location = models.CharField(_('Location'), max_length=70, null=True, blank=True)    date_time = models.DateTimeField(_('DateTime'), auto_now=True, null=True, blank=True)    activated = models.BooleanField(_('Activated'), default=False)    is_admin = models.BooleanField(_('is_admin'), default=False)    is_staff = models.BooleanField(_('is_staff'), default=False)    def __unicode__(self):        return str(self.mobile_no)    def __str__(self):        return str(self.mobile_no)    def get_full_name(self):        return self.first_name + " " + self.last_name    class Meta:        ordering = ['-id']    @property    def is_staff(self):        return self.is_admin    def has_perm(self, perm, obj=None):        return self.is_admin    def has_module_perms(self, app_label):        return self.is_admin    USERNAME_FIELD = 'mobile_no'    REQUIRED_FIELDS = ['role']

慕村9548890

您可能遇到此问题,因为在必填字段中,您只指定了电子邮件和角色,而没有指定名字、姓氏和位置。在声明用户用户管理器时,您没有为这些字段提供默认值,因此您必须在必填字段中指定它们。那应该可以解决您的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python