6

我在需要引用另一个字段的序列化程序中执行自定义字段级验证。

查看验证文档中的示例,我不清楚是否应该使用validate_<fieldname>validate。看起来两者都有attrs字典,所以 fromvalidate_<fieldname>我可以像 from 一样轻松地引用另一个字段validate(即使描述validate表明您应该使用它来访问多个字段)。那么为什么会有这两种选择呢?就我而言,使用哪个选项是正确的?

4

1 回答 1

17

提高ValidationError内部validate_<foo>()将导致字段错误。

{'foo': ['Not a fooish value.']}

提高ValidationError内部validate()将导致非字段错误。

{'non_field_errors': ['Foo and bar are not compatible.']}

那么为什么会有这两种选择呢?

部分原因是上述原因,部分原因是序列化程序 API 在可能的情况下反映了 Django 的表单 API。在需要的地方有一些差异,但validatevalidate_<foo>风格是相似的。

就我而言,使用哪个选项是正确的?

你判断调用,根据哪个错误信息更合适。

于 2013-08-28T08:51:16.640 回答