Django model字段default=None有用吗?



在我目前的项目中,我正在研究我们在模型字段上使用default=None,用于models.CharField(default='')。这有什么意义吗?我查阅了Django文档,但找不到答案。我搜索了Django源代码和模型字段,初始设置为default=NOT_PROVIDED,这被定义为

class NOT_PROVIDED:
pass

所以我现在更困惑了。在Django项目中运行我的测试,我有一种感觉,如果我使用default=Nonedefault=''并不重要

差异取决于您将如何使用该特定数据。对于大多数情况,没有区别,但您必须清楚''None是不同的Python数据类型:

>>> type('')
<class 'str'>
>>> type(None)
<class 'NoneType'>
>>>

所以当数据类型在数据的使用上下文中是超越的时候就会有区别。

如文档所示

避免在CharField和等基于字符串的字段上使用null文本框。如果一个基于字符串的字段有null=True,那就意味着它有" no data "有两种可能的值:NULL和空字符串。在大多数在这种情况下,为"no data"提供两个可能的值是多余的Django惯例是使用空字符串,而不是NULL。一个例外是当CharField同时具有unique=True和blank=True集合时。在这个情况下,需要null=True以避免违反唯一约束当保存多个带有空白值的对象时。

最新更新