可空的 DecimalField 在为空时返回 '此值必须为十进制数字
我在我的模型里有一个字段,它的类型是 DecimalField
。虽然我在选项里设置了 blank=True
和 null=True
,但是当我的模型通过表单验证时,如果这个字段是空的,我还是会收到一个错误提示:“这个值必须是一个十进制数字。”难道 DecimalField
不能是空的吗?我可以把这个字段的默认值设为0,但我更希望它可以为空。
注意:这个字段最开始是 不 允许为空的,但我通过 South 迁移把它改成了可以为空。我已经仔细检查了数据库,确认这个列的设置是 Not NULL? = No。
这是模型中字段的定义:
reqwest_max = models.DecimalField("Maximum $", max_digits=11, decimal_places=2, blank=True, null=True)
ModelForm 的定义是:
class ReqwestDetailsForm(ModelForm):
details = forms.CharField(widget=forms.Textarea(attrs={'class':'span8'}),
label = 'What do you need help with?',
required=False)
reqwest_max = forms.CharField(label = "Will Pay Up To $",
required=False)
class Meta:
model = Reqwest
widgets = {
'tags': TextInput(attrs={'size':75}),
}
1 个回答
9
你的 forms.CharField
会返回一个空字符串,而不是 None
(Python里的空值)。所以它会试着把列设置为 ''
(空字符串),而不是 NULL
。
你可能应该在表单中使用 django.forms.DecimalField
。可以查看这个链接了解更多信息:https://docs.djangoproject.com/en/dev/ref/forms/fields/#decimalfield