У вас правильная идея, но проблема в том, что проверки отдельных полей уже выполнялись до очистки формы. У вас есть пара вариантов. Вы можете сделать поле не обязательным и обрабатывать логику, когда оно требуется в вашем form.clean
. Или вы можете оставить поле по мере необходимости и удалить ошибки проверки, которые могут возникнуть в чистом виде.
def clean(self):
cleaned_data = self.cleaned_data
some_field = cleaned_data.get("some_field")
if some_field == 'some_value':
if 'other_field' in self.errors:
del self.errors['other_field']
cleaned_data['other_field'] = None
return cleaned_data
У этого есть некоторые проблемы в том, что он удаляет все ошибки, а не только пропущенные / требуемые ошибки. Существует также проблема с cleaned_data
. Теперь у вас есть обязательное поле, которого нет в cleaned_data, поэтому я добавил его как None
. Остальная часть вашего приложения должна будет обработать этот случай. Может показаться странным иметь обязательное поле, которое не имеет значения.