在Django中使表单无效而不引发ValidationError

在Django中使表单无效而不引发ValidationError,django,django-forms,validation,Django,Django Forms,Validation,我希望表单无效,但不会在任何表单或表单字段的clean方法中引发ValidationError。这样做的原因是表单是一组“子表单”的“超级表单”,我希望超级表单在其任何子表单无效时无效。但是这种无效性并不需要在超级表单中引发ValidationError,事实上,我不希望在超级表单中引发ValidationError,因为我不希望任何错误消息出现在超级表单的错误列表中(避免在超级表单的非\u字段\u errors中显示错误消息是我的主要动机。)对我来说,解决这个问题的一种方法是在视图中检查超级表

我希望表单无效,但不会在任何表单或表单字段的clean方法中引发ValidationError。这样做的原因是表单是一组“子表单”的“超级表单”,我希望超级表单在其任何子表单无效时无效。但是这种无效性并不需要在超级表单中引发ValidationError,事实上,我不希望在超级表单中引发ValidationError,因为我不希望任何错误消息出现在超级表单的错误列表中(避免在超级表单的
非\u字段\u errors
中显示错误消息是我的主要动机。)对我来说,解决这个问题的一种方法是在视图中检查超级表单及其子表单的
是否有效,但我更喜欢只检查超级表单,并使其
是否有效
返回
False
,即使其字段有效,但当其一个或多个子表单返回
False
是否有效时。谢谢。

为什么不重写is\u 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)

我认为这是正确的选择。我不知道python中的
all
函数;我认为该函数将在多个地方清理我的代码。谢谢!你的意思是调用
forms.Form.is\u valid(self)
?那
super(SuperForm,self)呢?