0

I want to redefine the required attribute for a field in a clean method of my form file:

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

But my clean method doesn't work

Py.
  • 365
  • 1
  • 4
  • 10

2 Answers2

2

Hey! Have you looked at htis document/examples:

Django Validation

Maybe this will clear it up.

bastianneu
  • 2,059
  • 2
  • 18
  • 31
1

One problem is that the clean function has to return the full collection of cleaned data (see docs). Rather than changing the 'required' attribute I believe you should do the check to see if 'phone' is blank and raise a 'ValidationError' describing the problem.

Also since your form inherits from 'NewUserForm' you should call super(NewUserFullForm, self).clean() to ensure that the inherited fields are cleaned as well.

Mark Lavin
  • 24,664
  • 5
  • 76
  • 70