Изменение значения поля в clean() после отрицательной валидации
У меня есть проблема, которую я не знаю, как решить. Я не знаю, возможно ли это вообще :(
У меня есть форма, которая для простоты имеет четыре поля (check, select, time1, time2). Когда чекбокс активен, отображается поле time, в противном случае select (с помощью JS).
class Form(forms.Form):
check = forms.BooleanField(required=False, initial=False, widget=forms.CheckboxInput(attrs={'style':'width:20px;height:20px;'}))
select = forms.ChoiceField(choices=[], required=False)
time1 = forms.TimeField(required=False)
time2 = forms.TimeField(required=False)
def __init__(self, *args, **kwargs):
select = kwargs.pop('select', None)
super(Form, self).__init__(*args, **kwargs)
self.fields['select'].choices = select
def clean(self):
cleaned_data = super(Form, self).clean()
time1 = cleaned_data.get("time1")
time2 = cleaned_data.get("time2")
select = cleaned_data.get("select")
check = cleaned_data.get("check")
if check:
if time1 is None or time2 is None:
raise forms.ValidationError(
{'time1': ["error!", ], 'time2': ["error!", ]}
)
else:
if select is None:
raise forms.ValidationError(
{'select': ["error!", ]}
)
Я не знаю, как изменить значение поля check на True, когда поля времени не заполнены. Я не могу использовать clean_data["check"] = True с return, потому что это не вызовет исключение