当使用ForeignKey字段时,Django中blank=True和null=True哪个更好?

6

来源:https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.Field.null

避免在CharField和TextField等基于字符串的字段上使用null。如果一个基于字符串的字段具有null=True,那么它有两个可能的“无数据”值:NULL和空字符串。在大多数情况下,拥有两个可能的“无数据”值是多余的;Django的约定是使用空字符串而不是NULL。

那么ForeignKey字段应该怎么做呢?ForeignKey字段不是基于字符串的字段,对吗?

我想知道在Django中ForeignKey字段的约定是什么。

null=True好还是blank=True好呢?在性能、便利性或其他方面有何区别。


您可以参考以下链接:https://dev59.com/0Goy5IYBdhLWcg3wWss_?rq=1 - Storm
2个回答

8

有所不同。请查看文档

请注意,这与null不同。null纯粹是与数据库相关,而blank与验证相关。如果字段具有blank=True,则表单验证将允许输入空值。如果字段具有blank=False,则该字段将是必填的。

因此,对于ForeignKey,您需要同时设置:null=True, blank=True


6

这些用于不同的目的:

  • Null = True:如果您想将数据库中的列设置为可空,则使用此项。
  • blank = True:它不影响数据库列。该列仍然不能为null(默认情况下),但在html表单中,输入字段可以保留为空。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接