将错误注入已经过验证的表单中?

时间:2008-10-09 19:45:23

标签: django django-forms

form.Form验证用户输入值后,我将它们传递给单独的(外部)进程以进行进一步处理。此外部过程可能会在值中发现更多错误。

有没有办法将这些错误注入已经过验证的表单中,以便通过常用的表单错误显示方法显示它们(或者有更好的替代方法)?

一个建议是在表单验证中包含外部处理,这不是理想的,因为外部流程不仅仅需要验证。

4 个答案:

答案 0 :(得分:94)

对于Django 1.7+,您应该使用form.add_error()而不是直接访问form._errors

文档:https://docs.djangoproject.com/en/stable/ref/forms/api/#django.forms.Form.add_error

答案 1 :(得分:88)

Form._errors可以像标准字典一样对待。它被认为是使用ErrorList类并将错误附加到现有列表的好形式:

from django.forms.utils import ErrorList
errors = form._errors.setdefault("myfield", ErrorList())
errors.append(u"My error here")

如果您想添加非字段错误,请使用django.forms.forms.NON_FIELD_ERRORS(默认为"__all__")而不是"myfield"

答案 2 :(得分:14)

答案 3 :(得分:0)

向特定字段添加错误:

form.add_error('fieldName', 'error description')

**向非字段添加错误**

form.add_error(None, 'error description')
#Only pass None instead of field name