Django ModelForm不允许所需字段的空值?

时间:2015-08-17 18:25:50

标签: python django django-models django-forms

我有一个带有此字段的模型......

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?

1 个答案:

答案 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