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