I am trying to change the required of a form field to 'False' depending on the input of another field.
form:
class MyNewForm(forms.Form):
def __init__(self, *args, **kwargs):
self.users = kwargs.pop('users', None)
super(MyNewForm, self).__init__(*args, **kwargs)
self.fields['name'] = forms.CharField(
max_length=60,
required=True,
label="Name *:",
widget=forms.TextInput(
attrs={'class' : 'form-control', 'placeholder': 'Name'})
)
def clean_this_other_field(self):
# change required field
name = self.fields['name']
print name.required
name.required=False
print name.required
results of print:
True
False
So the field required is changing to 'False' but when the form page reloads it reverts back to 'True'
Any suggestions?
EDIT - Problem solved
For anyone landing on this with a similar issue:
def clean_remove(self):
cleaned_data = super(MyNewForm, self).clean()
remove = cleaned_data.get('remove', None)
if remove:
self.fields['name'].required=False
Remove is the first field in the form so adding this clean on the remove field resolves the issue.