Django自定义User_info模型创建超级用户时触发TypeError错误求助
问题解决:自定义User模型创建超级用户时出现is_staff参数错误
问题原因
你的User_info模型中没有定义is_staff字段,但自定义管理器的create_staffuser和create_superuser方法里,都往extra_fields中传入了is_staff=True参数。创建模型实例时Django找不到对应字段,因此抛出参数不匹配的错误。
注意:PermissionsMixin仅提供is_superuser字段,is_staff需要手动在自定义用户模型中添加。
修复步骤
修改User_info模型,添加is_staff字段:
class User_info(AbstractBaseUser, PermissionsMixin): name = models.CharField(max_length=32) usr_id = models.CharField(max_length=20) number = models.CharField(max_length=12) account = models.CharField(max_length=20,unique=True) gender = models.CharField(max_length=1, choices=[('M', '男'), ('F', '女')], default='M') balance = models.DecimalField(max_digits=10, decimal_places=2, default=0) # 添加is_staff字段,默认设为False is_staff = models.BooleanField(default=False) objects = CustomUserManager() USERNAME_FIELD = 'account' REQUIRED_FIELDS = ['name', 'usr_id', 'number', 'gender'] def __str__(self): return self.account
后续操作
- 执行数据库迁移命令:
python manage.py makemigrations python manage.py migrate
- 重新尝试创建超级用户:
python manage.py createsuperuser
此时模型已包含is_staff字段,与管理器传递的参数匹配,即可正常创建超级用户。
内容的提问来源于stack exchange,提问作者user23519987
相关产品推荐
相关产品推荐

