我使用以下自定义表单验证程序,以确保通过InlineFormSet向我的应用程序提交的条目不多于一个correct
。
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?
答案 0 :(得分:1)