0

フォームファイルのcleanメソッドのフィールドに必要な属性を再定義したいと思います。

class NewUserFullForm(NewUserForm):

REGEX_PHONE = '^(\+[0-9]{2})[ \.\-]?[0-9][ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$'

phone = forms.RegexField(REGEX_PHONE, help_text='Ex : +33 1 34 12 52 30')
fax = forms.RegexField(REGEX_PHONE, help_text='Ex : +33 1 34 12 52 30',  required=False)
gsm = forms.RegexField(REGEX_PHONE, help_text='Ex : +33 6 34 12 52 30',  required=False)

def clean(self):
   if self.cleaned_data["asso_waldec"] == True:
      self.fields['phone'].required = True

しかし、私のクリーンな方法は機能しません

4

2 に答える 2

2

Hey! Have you looked at htis document/examples:

Django Validation

Maybe this will clear it up.

于 2009-10-29T10:50:16.153 に答える
1

問題の 1 つは、clean 関数がクリーニングされたデータの完全なコレクションを返さなければならないことです ( docsを参照)。「必須」属性を変更するのではなく、「電話」が空白かどうかを確認し、問題を説明する「ValidationError」を発生させる必要があると思います。

また、フォームは 'NewUserForm' から継承 super(NewUserFullForm, self).clean()されるため、継承されたフィールドも消去されるように呼び出す必要があります。

于 2009-10-29T12:17:26.523 に答える