在Django中不提高ValidationError使表单无效

时间:2009-07-13 03:37:33

标签: django django-forms validation

我希望表单无效,而不会在任何表单或表单的字段的干净方法中引发ValidationError。这样做的原因是表单是一组“子表单”的“超级表单”,我希望超级表单在其任何子表单无效时无效。但是这种无效性并不需要以超级形式引发ValidationError,事实上我不想以超级形式引发ValidationError,因为我不希望任何错误消息出现在超级表单的错误列表中(避免显示超级形式的non_field_errors中的错误消息是我在这里的主要动机。)对我而言,这样做的一种方法是在视图中检查is_valid的超形式及其子形式,但我更喜欢仅检查超级表单并使其is_valid返回False即使其字段有效,但当其一个或多个子表单返回Falseis_valid时。谢谢。

1 个答案:

答案 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)