Django Fomset is_valid()失败,没有错误

时间:2012-11-09 15:10:02

标签: django django-forms formset

我正在构建一个基于自定义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则没有显示任何内容。

2 个答案:

答案 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):

感谢所有人!