Django field required in a clean method in a form class
-
10-07-2019 - |
Question
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
Solution
OTHER TIPS
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.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow