0

我正在构建一个基于自定义 ModelForm 和自定义验证的表单集。

问题是验证失败且没有错误。

这是自定义的 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 什么也不显示。

4

2 回答 2

1

您缺少返回cleaned_data

于 2012-11-09T15:40:54.043 回答
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):

谢谢大家!

于 2012-11-09T16:04:51.447 回答