您可以幫助將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']
另一種方式來處理,這是使用形式的清潔方法踢餘額字段出cleaned_data而讓模型設置的默認值。
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)
唯一的問題是需要在clean方法中定義默認值,並且不要回退到model中設置的默認值。 – Rohan
將clean_方法更改爲使用模型的默認值。 – kanu