Leo*_*opd 10 django django-models
在django模型中定义字段时,有两种方法可以说该字段是空的. null
表示它在数据库中可以为空,并blank
表示该字段在表单中可以为空.为什么这些不同?每次我设置一个而不是另一个出错.允许它们不同似乎只是邀请表单的问题,允许您创建数据库不接受的对象.
换句话说,当你会永远使用null=True,blank=False
或null=False,blank=True
在Django模型?
Chr*_*att 40
它们有两个完全不同的含义:
空白:确定是否应在表单中按要求验证字段.False
表示如果不提供表单将生成错误,而True
表示允许空值.
null:确定是将字段设置为DB NULL
还是NOT NULL
DB级别.这与表单验证无关.
一些例子:
blank=True, null=False
如果IntegrityError
该字段不是CharField或TextField,则会随时将该字段留空.这两个字段在空时发送''
(空字符串)而不是NULL
DB.
blank=False, null=True
将始终要求以所有形式填写该字段(表单将ValidationError
在字段上提升),即使允许该列NULL
.但是,这仅适用于表格.您可以手动将属性设置为None
并将其保存在表单之外(例如,在shell中).
null=False, blank=True
对于 s 来说很常见CharField
,其中空白答案作为空白字符串而不是 null 存储在数据库中。反过来使用就没有多大意义。
对于非字符串字段,非答案存储为null
,因此您需要两者。
归档时间: |
|
查看次数: |
8747 次 |
最近记录: |