在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抛出的错误消息。如何知道密码字段或电子邮件字段是否存在问题?我想解析那条错误信息不是最佳选择。
答案 0 :(得分:3)
您可以添加如下字段级错误:
self._errors["<field_name>"] = self.error_class([msg])
如果您在ValidationError
中引发clean
,则会导致非字段错误。请参阅documentation页面的底部摘录。