2

Django 文档中,验证相互依赖的字段的建议方法是在表单的clean()方法中。这是有道理的,但我正在处理的问题是如何通知视图哪些字段导致了问题。

当只有一个领域失败时,我可以这样检查:

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 引发的错误消息。我如何知道问题出在密码字段还是电子邮件字段?而且我想解析该错误消息不是要走的路。

4

1 回答 1

3

您可以像这样添加字段级错误:

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

如果你提出一个ValidationErrorin clean,它将导致一个非字段错误。请参阅文档页面的底部片段。

于 2013-05-17T13:09:13.663 回答