1

我正在使用以下自定义表单验证器来确保correct通过 InlineFormSet 提交给我的应用程序的条目不超过一个。

class BaseAnswerFormSet(forms.models.BaseInlineFormSet):
    def clean(self):
        if any(self.errors):
            return
        if len([d['correct'] for d in self.forms if d['correct'].value()]) !=1:
            raise forms.ValidationError("There must be one and only one correct answer")
        return

这是有效的,因为呈现的表单对象将False在评估为时返回,.is_clean()但没有返回错误。这是我pdb在处理 的视图中使用时显示的内容POST

(Pdb) answerformset.is_valid()
False
(Pdb) answerformset.errors
[{}, {}, {}]

不应该raise forms.ValidationError("There must be one...创建一个错误条目吗?我知道answerformset.errors列表中的每个空字典都是针对每个答案形式的,但我认为会有一个non_field_error或类似的东西?

如何让这个干净的函数返回可以在模板中显示的错误?如何向其中添加 non_field_error?

4

1 回答 1

1

请阅读自定义表单集验证Formset可以使用以下方式访问自定义错误non_form_errors

answerformset.non_form_errors()
于 2013-01-04T22:11:45.667 回答