我有一个带有此字段的模型......
fulfillment_flag = models.CharField(pgettext_lazy('Delivery group field', 'Fulfillment Flag'), max_length=255,
null=True, choices=FULFILLMENT_FLAG_CHOICES)
这是我的表格......
class FulfillmentFlagForm(forms.ModelForm):
class Meta:
model = DeliveryGroup
fields = ['fulfillment_flag', ]
def clean_fulfillment_flag(self):
return self.cleaned_data['fulfillment_flag'] or None
我有一个HTML选择下拉列表,顶部有一个空白值选项。每次我选择空白选项并单击“保存”时,表单都不会将其保存为模型上的Null值。它会保存任何其他字段,但不是空白字段。它会告诉我这个领域也是必需的。
如何告诉表单只将空白值保存为Null?
答案 0 :(得分:3)
https://docs.djangoproject.com/en/1.8/ref/models/fields/#null
避免在基于字符串的字段(如CharField和TextField)上使用null,因为空字符串值将始终存储为空字符串,而不是NULL。如果基于字符串的字段具有null = True,则表示它具有“无数据”的两个可能值:NULL和空字符串。在大多数情况下,为“无数据”提供两个可能的值是多余的; Django约定是使用空字符串,而不是NULL。
对于基于字符串和非字符串的字段,如果您希望在表单中允许空值,则还需要设置blank = True,因为null参数仅影响数据库存储(请参阅空白)。
改为blank=True
并保存""
而不是None
。