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!!!")

私も1つの形式で試しましたが、is_valid()は常にFalseであり、field.errorsfield.non_field_errorsは何も表示しません。

4

2 に答える 2

1

returncleaned_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 に答える