在Django中强制要求电子邮件字段必填
根据Django的文档,'email'字段是可选的。我想改变Django默认的这个行为。
我已经扩展了模型,添加了一些自定义字段,但还是无法覆盖这个设置(因为技术上的限制)。我看到这里有其他问题提到与用户模型相关的情况,通常建议通过子类化注册表单来强制要求填写邮箱字段。
不过,从管理界面是做不到这一点的。我的应用没有注册表单,用户必须通过管理面板添加。
到目前为止,我在网上搜索了很久,似乎根本不可能做到,或者我必须重新创建整个模型才能改变这个设置,这对我来说听起来并不是最好的解决办法。
有没有人有更好的方法呢?
1 个回答
0
如果你只是想让邮箱字段变成必填项,最简单的方法就是创建一个自定义的用户模型,这个模型和你原来的用户模型一模一样,只不过把邮箱字段设置成唯一的。Django已经有一个叫做 AbstractUser
的类,里面正好包含了你需要的内容。你可以像这样修改你的 User
模型 -
class MyUser(AbstractUser):
# your extra fields
做完这个修改后,Django会确保在你使用邮箱字段的任何地方都要求填写,包括在管理面板里。