django blank 与 null的区别
1.blank
blank控制表单验证时是否允许字段为空
2.null
null控制数据库层面是否为空
但是,要注意以下几点:
- Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字段是否可以为空。如果你想要表单验证也考虑字段是否为空,你需要设置blank参数。
- 通常不推荐为CharField设置null=True:因为CharField是用来存储字符串的,通常你期望它有一个值(即使是一个空字符串)。如果字段可以为空,通常更好的做法是使用blank=True,这样表单验证会允许字段为空,但数据库层面该字段仍然会有一个空字符串值,而不是NULL。
- 迁移和数据库兼容性:改变一个字段的null设置可能会需要数据库迁移。确保在进行这样的更改时运行了适当的迁移,并且考虑到了可能的数据库兼容性问题