我希望表单无效,而不会在任何表单或表单的字段的干净方法中引发ValidationError。这样做的原因是表单是一组“子表单”的“超级表单”,我希望超级表单在其任何子表单无效时无效。但是这种无效性并不需要以超级形式引发ValidationError,事实上我不想以超级形式引发ValidationError,因为我不希望任何错误消息出现在超级表单的错误列表中(避免显示超级形式的non_field_errors
中的错误消息是我在这里的主要动机。)对我而言,这样做的一种方法是在视图中检查is_valid
的超形式及其子形式,但我更喜欢仅检查超级表单并使其is_valid
返回False
即使其字段有效,但当其一个或多个子表单返回False
到is_valid
时。谢谢。
答案 0 :(得分:1)
为什么不覆盖is_valid方法?
class SuperForm(forms.Form):
def is_valid(self):
return forms.Form.is_valid(self) and all(form.is_valid() for form in self.sub_forms)