ModelForm验证

时间:2013-05-03 19:45:09

标签: django django-models django-forms

Django说“请注意,如果表单尚未验证,则调用save()将通过检查form.errors来执行此操作。如果表单中的数据未验证,则会引发ValueError - 即,如果表单.errors评估为True。“

我无法清除的是

  • 当我在ModelForm上调用save时会运行验证吗?

  • 如果我使用form.is_valid()方法验证了表单数据,那么save()方法会再次进行验证。(我问这是因为某些验证需要我对外键进行数据库查询验证,因为它有一些限制)

我问这个问题好像第一个问题是真的,我觉得根本不进行验证是个好主意,而只是调用save方法,让它调用验证方法然后捕获它。 / p>

1 个答案:

答案 0 :(得分:1)

第一个问题 - 是的。正如文档所说,调用save()会访问form.errors,如果表单尚未经过验证,则触发验证。

第二个问题 - 不,验证不会再次运行。一旦验证了表单,无论是通过调用is_valid()还是通过调用.save(),都会填充form.errors,并且无需重新运行验证即可读取。

无论使用哪种方法,验证都只运行一次。