我正在构建一个基于自定义ModelForm和自定义验证的formset。
问题是验证失败而没有错误。
这是自定义ModelForm和Formset:
class AlternateFloorForm(ModelForm):
class Meta:
model = Floor
exclude = ('id_edificio', 'numero_di_piano', 'link', 'id')
widgets = {
'bearing' : HiddenInput(),
'zoom_on_map' : HiddenInput(),
'posizione_immagine' : HiddenInput(),
}
class BaseAlternateFloorFormSet(BaseFormSet):
def clean(self):
if any(self.errors):
return
for i in range(0, self.total_form_count()):
form = self.forms[i]
bearing = form.cleaned_data.get('bearing', None)
if (bearing != None) or (bearing < 0) or (bearing > 360):
raise forms.ValidationError("Bearing is not correct!!!")
我也尝试过只有一个表单,但is_valid()总是为False,而field.errors field.non_field_errors则没有显示任何内容。
答案 0 :(得分:1)
您缺少return cleaning_data
答案 1 :(得分:0)
所以,我错过了
return self
正如Raunak Agarwal所说,在表单验证中,我正在使用一种不正确的方法来回复Mark Lavin所说的错误。
但总而言之是
if (bearing != None) or (bearing < 0) or (bearing > 360):
总是返回False。这是正确的条件:
if (bearing == None) or (bearing < 0) or (bearing > 360):
感谢所有人!