django - 将错误插入InlineFormSet自定义验证器

标签 django error-handling django-forms inline-formset

我使用以下自定义表单验证器来确保通过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 ValidationFormset自定义错误可以使用non_form_errors访问:

answerformset.non_form_errors()

关于django - 将错误插入InlineFormSet自定义验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164321/

相关文章:

python - “ascii”编解码器无法对位置 5 : ordinal not in range(128) error 中的字符 u'\u2019' 进行编码

python - Django fixtures 和 AttributeError : 'QuerySet' object has no attribute <custom_model_method>

wcf - 我可以使用独立的WCF Web服务更改错误页面(404)吗?

python - 在 Django 中存储电话号码时,我应该将它们存储为原始数字还是使用 django.contrib.localflavor?

python - 上传多张图片并关联到属性

python - django 设置 session 变量直到一天结束

python - 如何根据django中模型其他字段的状态修改字段渲染行为

python - 从前端创建 Django 调查表单

c# - NLog文件的自定义文件名

vb.net - 哪种形式导致了我的异常(exception)?