Django:验证几个字段

时间:2013-05-17 13:00:04

标签: django django-forms

Django Documentation中,验证依赖于彼此的字段的建议方法是使用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类,如果它们具有不同的值,但在视图中,我没有引用导致问题的窗口小部件。我唯一的信息是Form clean()方法中ValidationError抛出的错误消息。如何知道密码字段或电子邮件字段是否存在问题?我想解析那条错误信息不是最佳选择。

1 个答案:

答案 0 :(得分:3)

您可以添加如下字段级错误:

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

如果您在ValidationError中引发clean,则会导致非字段错误。请参阅documentation页面的底部摘录。