Django自定义用户模型创建超级用户时触发FieldDoesNotExist错误
解决Django自定义用户模型创建超级用户时的FieldDoesNotExist错误
错误原因
你在CustomUser模型的REQUIRED_FIELDS中直接传入了字段对象(full_name、phone_number),而非字段名称的字符串。Django会将这些对象解析为带模块路径的标识(如usermanager.CustomUser.full_name),但系统需要的是纯字段名字符串,因此抛出字段不存在的错误。
修复方案
将REQUIRED_FIELDS的元素改为字符串形式即可:
class CustomUser(AbstractBaseUser, PermissionsMixin): email = models.EmailField(unique=True) full_name = models.CharField(max_length=100) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) phone_number = models.CharField(max_length=10) institution = models.CharField( max_length=100, blank=True, null=True ) objects = CustomUserManager() USERNAME_FIELD = 'email' # 修改为字符串列表 REQUIRED_FIELDS = ['full_name', 'phone_number'] def __str__(self): return self.email
验证修复
修改完成后,重新执行创建超级用户的命令:
python manage.py createsuperuser
此时系统会正常提示输入邮箱、全名、手机号等信息,不会再出现字段不存在的报错。
内容的提问来源于stack exchange,提问作者Echchama Nayak
相关产品推荐
相关产品推荐

