我使用以下自定义表单验证器来确保通过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
的 View 中使用POST
时显示的内容:(Pdb) answerformset.is_valid()
False
(Pdb) answerformset.errors
[{}, {}, {}]
raise forms.ValidationError("There must be one...
不应该创建错误条目吗?我知道answerformset.errors
列表中的每个空字典都适用于每种答案形式,但是我认为会有non_field_error
或类似的东西吗?如何获得此清除函数以返回可以在模板中显示的错误?我该如何添加non_field_error?
最佳答案
请阅读Custom Formset Validation。 Formset
自定义错误可以使用non_form_errors
访问:
answerformset.non_form_errors()
关于django - 将错误插入InlineFormSet自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164321/