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 NULLDB级别.这与表单验证无关.
一些例子:
blank=True, null=False如果IntegrityError该字段不是CharField或TextField,则会随时将该字段留空.这两个字段在空时发送''(空字符串)而不是NULLDB.
blank=False, null=True将始终要求以所有形式填写该字段(表单将ValidationError在字段上提升),即使允许该列NULL.但是,这仅适用于表格.您可以手动将属性设置为None并将其保存在表单之外(例如,在shell中).
null=False, blank=True对于 s 来说很常见CharField,其中空白答案作为空白字符串而不是 null 存储在数据库中。反过来使用就没有多大意义。
对于非字符串字段,非答案存储为null,因此您需要两者。
| 归档时间: |
|
| 查看次数: |
8747 次 |
| 最近记录: |