Django模型字段默认为空

SPo*_*age 54 python django django-models

我需要让我的Django应用程序允许我为某个模型字段设置一个默认值NULL.我已经查看了null,blankdefault参数,但是我不太清楚我需要使用哪三种组合来获得所需的效果.我尝试过设置,default=NULL但它犯了一个错误.如果我指定blank=True, null=True并且没有默认值,那么它是否会默认返回NULL来运行时?

gru*_*czy 98

试试default=None.NULLpython中没有.

  • 为了清楚起见,他所指的NULL是Django模型字段.这允许/禁止将None值用于该值,该值在数据库中存储为NULL,而不是在Python中.空白是指表单/ admin/etc中的验证是否需要该值. (3认同)
  • @Nexion,`default=None` 不允许或禁止使用 None 值。它只是告诉 Django 如果未指定该字段的值应该是什么。`null=True` 允许在 Python 代码中使用 None 。它在数据库中被视为 NULL。您对用于表单验证的空白是正确的。 (2认同)

Kev*_*vin 30

如果在模型字段上指定null = True,则如果用户未提供值,则该值将在数据库中存储为NULL.

  • 请看下一段:避免在基于字符串的字段(如CharField和TextField**)上使用null,因为空字符串值将始终存储为空字符串,而不是NULL**.如果基于字符串的字段具有null = True,则表示它具有"无数据"的两个可能值:NULL和空字符串.在大多数情况下,为"无数据"提供两个可能的值是多余的; Django约定是使用空字符串,而不是NULL. (7认同)
  • 在大多数情况下,情况并非如此,因为通常它会存储一个空字符串. (5认同)
  • 是的,我已经阅读了文档,谢谢,原始帖子或我的回复中没有提到基于字符串的字段。如果您将 null=True 放在基于字符串的字段上,如果没有输入数据,它将在数据库中存储为 NULL。我完全不知道你想在这里指出与本次讨论相关的什么。在每种情况下都是如此,如果你把 null=True 空值将被存储为 NULL。文档建议您不要将 null=True 放在字符串上,因为这样它们将被存储为 NULL,并不是说放置 null=True 将被字符串字段忽略。 (2认同)
  • 也许我以错误的方式解释它,但是在这种情况下,文档是什么意思“因为空字符串值将始终存储为空字符串,而不是 NULL”? (2认同)

小智 5

  • blank=True 允许你输入什么(即""None),并保持空。
  • null=True 表示允许数据库行为NULL
  • default=NoneNone如果没有其他值,则 将该字段设置为。