class CustomerForm(forms.ModelForm):
class Meta:
model = Customer
class Customer(models.Model):
balance = models.FloatField(default = 0.0)
form = CustomerForm(request.POST)
if form.is_valid():
# is FALSE
当我提交没有balance
字段的表单时,我收到验证错误,指出需要余额字段。那是为什么?
答案 0 :(得分:2)
您可以帮助将clean_FIELDNAME
方法添加到默认返回0.0
的表单中。
在表单的清理过程中调用此方法。
class CustomerForm(forms.ModelForm):
balance = models.FloatField(required=False)
def clean_balance(self):
if not 'balance' in self.cleaned_data or self.cleaned_data['balance'] is None:
return self._meta.model._meta.get_field('balance').default
else:
return self.cleaned_data['balance']
处理此问题的另一种方法是使用表单清理方法将balance_data中的balance字段踢出,并让模型设置默认值。
class CustomerForm(forms.ModelForm):
class Meta:
model = Customer
def clean(self):
if 'balance' in self.cleaned_data and self.cleaned_data['balance'] is None:
del self.cleaned_data['balance']
return self.cleaned_data
class Customer(models.Model):
balance = models.FloatField(blank=True, null=False, default=0.0)
答案 1 :(得分:1)
required=False
足以代表balance
中未{。}}字段进行检查。
还将forms.py
和blank=True
值添加到default
字段
此处无需使用balance model
方法。因为在您寻找自定义验证时会使用clean
。
django形式有两种自定义验证方法 -
1)您可以使用clean
方法。
2)您可以使用clean
。