我猜这个问题在Django ORM之外也非常相关。由于我正在研究它,我会这样说。
说,我有一个django模型抽象类,其中包含以下字段
content = models.TextField()
一个继承的模型肯定需要它,而另一个继承模型基于选择(另一个字段)。我发现有两种方法可以:
在抽象类中使用null=True, blank=True
,在继承的类中创建必要的条件验证语句
在抽象类中使用default=''
并进行必要的条件验证
在这种情况下,我想要实现两件事
哪种方法更受首选?为什么不是另一个?
答案 0 :(得分:0)
来自django docs:
避免在基于字符串的字段(如CharField和)上使用null TextField,因为空字符串值将始终存储为空 字符串,而不是NULL。如果基于字符串的字段具有null = True,那么 意味着它有两个可能的“无数据”值:NULL,空 串。在大多数情况下,拥有两个可能的值是多余的 “没有数据;”Django约定是使用空字符串,而不是NULL。
你不必为默认指定空字符串,因为这就是django无论如何都用于“无数据”。避免null。我建议您将该字段指定为blank = True(无null)并在表单级别强制执行验证。