Изменение значения поля в 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, потому что это не вызовет исключение

Вернуться на верх