2013-05-17 169 views
2

Django Documentation中,验证互相依赖的字段的建议方法是使用表格的clean()方法。它是有道理的,但我正在处理的问题是如何通知视图哪些字段导致问题。Django:验证多个字段

当它只是一个领域谁是失败的,我可以检查它像这样:

for field in form: 
    if field.errors: 
     # I know exactly in what field is the problem 

但是,如果错误来自clean()方法,我的一切是错误消息:

if form.errors: 
    for error in form.errors: 
     # I know there's a problem, and I got an error message, 
     # but I don't know what are the fields that cause it. 

在典型的注册表格中,您必须写两次邮件和两次密码以避免输入错误。举例来说,如果两个密码字段的值不同,我想要更改这两个密码字段的CSS类,但在视图中,我没有提及导致问题的小部件。我唯一的信息是表单的clean()方法中的ValidationError引发的错误消息。我如何知道问题出在密码字段还是电子邮件字段?我想解析这个错误信息不是要走的路。

回答

3

您可以添加一个字段级别的错误是这样的:

self._errors["<field_name>"] = self.error_class([msg]) 

如果提高在clean一个ValidationError,这将导致非现场错误。请参阅documentation页面的底部片段。

+0

我已经看到了,但问题是我所谈论的错误涉及多个领域,而不仅仅是一个领域。 –

+1

这有什么关系?当您自己设置错误时,_you_决定将显示哪个字段。你在寻找'form.non_field_errors'吗? –

+0

你说得对,谢谢你:-) –