【发布时间】:2017-02-26 15:03:31
【问题描述】:
【问题讨论】:
标签: django django-models
【问题讨论】:
标签: django django-models
我知道您已经链接了这些文档,但我要为遇到相同问题的任何人明确指出这一点。不过,您的标题问题的答案在文档中明确而明确地存在 - 默认情况下两者都是False。如果您希望该字段为blank=True,那么是的,您需要在每个字段上手动指定。
空白代表表格:
如果为 True,则该字段允许为空。默认为 False。
请注意,这与 null 不同。 null 纯粹是 与数据库相关,而空白与验证相关。如果一个字段有 空白=真,表单验证将允许输入空值。如果一个 字段有空白=假,该字段将是必需的。
如果您保存的记录在该字段中没有任何内容,则空是存储在数据库中的内容。同样,此字段的属性是 null=False
如果为 True,Django 会将空值作为 NULL 存储在数据库中。默认为 False。
避免在基于字符串的字段(例如 CharField 和 TextField 因为空字符串值将始终存储为空 字符串,而不是 NULL。如果基于字符串的字段具有 null=True,则 意味着它有两个可能的“无数据”值:NULL 和空 细绳。在大多数情况下,有两个可能的值是多余的 “没有数据;” Django 的约定是使用空字符串,而不是 NULL。
对于基于字符串和非基于字符串的字段,您还需要 如果您希望在表单中允许空值,则设置 blank=True,因为 null 参数只影响数据库存储(见空白)。
在很多情况下,您希望表单为空白,但数据库条目为not Null - 例如you were specifying your own custom slug on model save。
当然,这也意味着您从主 Field 类派生的任何自定义 Fields 都将具有相同的默认行为。如果这真的让你感到困扰,你可以用你想要的行为覆盖 Field 类,但这对于其他追随你的人来说真的很麻烦。
【讨论】:
null=True,因为如果我想允许在基于字符串的字段中保存“无数据”值,那只是保存空字符串?
'' 作为没有数据的值。如果您为这些字段保留null=False 并且不向它们保存值,则该值自动为'',一个空字符串。