当未设置时,django的模型字段选项``blank``和``null``的默认值是多少?

时间:2017-02-26 15:03:32

标签: django django-models

documentation中,我无法找到答案。

如果我想将字段留空,我是否必须明确设置blank=True

编辑:我是瞎子。或者是愚蠢的。谢谢你指出了我的意思;)

1 个答案:

答案 0 :(得分:3)

我知道你已经链接了这些文档,但是我明确地将这个文档用于遇到同一问题的任何人。您的标题问题的答案在文档中明确且明确地显示 - 默认情况下都是False。如果您希望该字段为blank=True,则是,您需要在每个字段上手动指定。

空白用于表格:

  

如果为True,则允许该字段为空。默认值为False。

     

请注意,这与null不同。 null纯粹   与数据库相关,而空白与验证相关。如果有一个字段   blank = True,表单验证将允许输入空值。如果一个   field为blank = False,将需要该字段。

如果您在该字段中保存没有任何内容的记录,则Null是存储在数据库中的内容。同样,此字段属性为null=False

  

如果为True,Django会将空值存储为数据库中的NULL。默认值为False。

     

避免在基于字符串的字段(如CharField和)上使用null   TextField,因为空字符串值将始终存储为空   字符串,而不是NULL。如果基于字符串的字段具有null = True,那么   意味着它有两个可能的“无数据”值:NULL,空   串。在大多数情况下,拥有两个可能的值是多余的   “没有数据;”Django约定是使用空字符串,而不是NULL。

     

对于基于字符串和非字符串的字段,您还需要   如果您希望允许表单中的空值,则设置blank = True   null参数仅影响数据库存储(请参阅空白)。

在很多情况下,您希望表单为空,但数据库条目为not Null - 例如,you were specifying your own custom slug on model save

当然,这也意味着您从主Field类派生的任何自定义Field都将具有相同的默认行为。如果这真的困扰你,你可以用你期望的行为来覆盖Field类,但是对于那些追随你的人来说,调试真的很麻烦。