我试图通过覆盖表单clean()方法来验证管理表单。我遇到的问题是在模型字段验证之前似乎调用了clean()方法。如果未提供所需数据,或者数据输入不正确,则清理数据毫无意义。在清理数据之前,如何让django验证字段?
Django 1.7,python 3.4
model.py:
class ElectricityBill(models.Model):
rate = models.ForeignKey(ElectricityRate, blank = False) # This field should be required in the admin form
admin.py:
class ElectricityBillForm(forms.ModelForm):
class Meta:
model = ElectricityBill
def clean(self):
#self.validate_fields() - Something like this?
rate = self.cleaned_data.get("rate") # Returns None if rate is left blank.
如果rate为None,我想避免清理数据。否则我会检查很多If语句的Non语句。这也是一个难以管理,因为如果我添加了更多必填字段,或者取出了必填字段,我就必须编辑我的干净方法。
解决方法:
class ElectricityBillForm(forms.ModelForm):
class Meta:
model = ElectricityBill
def clean(self):
#self.validate_fields() - Something like this?
rate = self.cleaned_data.get("rate") # Returns None if rate is left blank.
if rate == None:
return
#Continue cleaning
这太糟糕了。它似乎有效,因为它会跳过其余的清理并导致模型验证运行。但是,以后管理会很痛苦。