当我们在Django中添加模型字段时,我们通常这样写:

models.CharField(max_length=100, null=True, blank=True)

ForeignKey, DecimalField等也是如此。两者的基本区别是什么:

null = True只 空白= True只 null=True, blank=True

对于不同的(CharField, ForeignKey, ManyToManyField, DateTimeField)字段?使用选项1、2或3的优点/缺点是什么?


当前回答

null=True和blank=True是django.db.models中的字段属性。Null是与数据库相关的,而空白是与验证相关的。

null

默认值为null=False。如果null=False, Django将不允许在数据库列中使用null值。

如果null=True, Django会将数据库列中的空值存储为null。对于CharField和TextField, django将使用空字符串"而不是NULL。避免为CharField和TextField使用空属性。一个例外是,当CharField具有unique=True和blank=True时,则需要null=True。

空白

默认为空白=False。如果blank=False,该字段将是必需的。

如果blank=True,该字段是可选的,可以留空。blank=True和null=False将需要在模型上实现clean()以编程方式设置任何缺失的值。

其他回答

Null纯粹与数据库相关,而blank与验证相关。如果一个字段为blank=True, Django管理站点的验证将允许输入一个空值。如果一个字段有blank=False,该字段将是必需的

这里有一个blank= True和null=True字段的示例

description = models.TextField(blank=True, null= True)

在这种情况下: blank = True:告诉我们的表单可以将description字段保留为空

and

null = True:告诉我们的数据库,在我们的db字段中记录一个空值并且不给出错误是可以的。

简单的null=True定义了数据库应该接受null值,另一方面,空白=True定义了表单验证该字段应该接受空白值或不接受空白值(如果空白=True,则接受该字段中没有值的表单,空白=False[默认值],则表单验证将显示此字段是必需的错误。

null=与数据库相关的True/False

blank=与表单验证相关的真/假

下表显示了主要的区别:

+--------------------------------------------------------------------+
| Purpose                  | null=True        | blank = True         |
|--------------------------|------------------|----------------------|
| Field can be empty in DB | Do this          | Unaffected           |
|--------------------------|------------------|----------------------|
| ModelForm(required field)| Unaffected       | field not required   |
|--------------------------|------------------|----------------------|
| Form Validation          | Unaffected       | field not required   |
|--------------------------|------------------|----------------------|
| on_delete=SET_NULL       | Need this        | Unaffected           |
+--------------------------------------------------------------------+

null - default为False 如果为True, Django将在数据库中存储为null。

blank - default为False 如果为真,则允许该字段为空

更多的钱,转到 https://docs.djangoproject.com/en/3.0/topics/db/models/