我有一个带Charfield的模型:
class SomeModel(models.Model):
charfield = models.Charfield(max_length=5, default="")
...
我希望在管理员中使用时不需要此字段。但是,当我将此模型包含在管理员中时,我需要此字段。我可以使用null=True, blank=True
,但我很好奇它是某种错误还是我实施了错误?
答案 0 :(得分:4)
我不确定你为什么认为这是一个错误。如果您未指定blank=True
,则需要某种非空值。根据定义,空字符串是一个空值;因此Django非常正确地显示一个错误,告诉您提供实际值。
如果要允许空字符串,则需要指定blank=True
。但是你不需要指定null=True
;事实上,正如文档所示,你不应该在CharFields上使用它。
答案 1 :(得分:1)
这是对的。 default
,null
和blank
具有不同的含义。
null
允许数据库https://docs.djangoproject.com/en/dev/ref/models/fields/#null
blank
允许模型https://docs.djangoproject.com/en/dev/ref/models/fields/#blank
此外,使用blank=True
的ModelForm(由管理员使用)将必填字段设为false,请参阅https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#field-types