在使用Django的外键字段时,空白的True和空值的True哪个更好?

16 浏览
0 Comments

在使用Django的外键字段时,空白的True和空值的True哪个更好?

来自: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好?在性能、方便或其他方面的考虑中哪个更好?

admin 更改状态以发布 2023年5月21日
0
0 Comments

这些用于不同的目的:

  • Null = True: 如果您希望使数据库中的列可为空,可以使用此选项
  • blank = True: 它不会影响数据库列。该列仍然不可为空(默认值),但是在html表单中,输入字段可以保持为空。
0
0 Comments

这是不同的。参见文档

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

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

0