Django自定义用户模型异常:创建超级用户时邮箱验证报错
问题解决步骤
1. 修改REQUIRED_FIELDS让创建超级用户时强制输入邮箱
在User模型中,REQUIRED_FIELDS用于定义除用户名(USERNAME_FIELD)和密码外,创建用户必须填写的字段。当前该数组为空,导致createsuperuser命令不会提示输入邮箱,需要将email加入其中:
class User(AbstractBaseUser,PermissionsMixin): # ... 其他字段定义 USERNAME_FIELD = 'name' EMAIL_FIELD = 'email' REQUIRED_FIELDS = ['email'] # 添加email到必填字段列表 # ... 其他代码
2. 修正email字段的数据库约束
你的模型中email字段设置了blank=True, default='',但业务要求注册必须提供有效邮箱,因此需要调整为必填约束:
email = models.EmailField(unique=True, blank=False, null=False)
移除default='',因为必填字段无需默认值,同时通过blank=False, null=False确保数据库层面也强制邮箱非空。
3. 验证管理器逻辑
你的_create_user方法已经包含邮箱非空校验,修改上述配置后,createsuperuser命令会自动收集邮箱参数并传入,不会再触发ValueError。
完成修改后,重新运行python manage.py createsuperuser,系统会依次提示输入用户名(name)、邮箱、密码,即可正常创建超级用户。
内容的提问来源于stack exchange,提问作者Sir Keith
相关产品推荐
相关产品推荐

