Django REST框架:validate_ <fieldname>和validate?</fieldname>之间的区别是什么?

时间:2013-08-28 07:54:13

标签: validation django-rest-framework

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

查看Validation documentation中的示例,我不清楚是否应该使用validate_<fieldname>validate。看起来两者都有attrs字典,因此从validate_<fieldname>我可以轻松地引用另一个字段validate(尽管validate的说明表明你应该用它来访问多个领域)。那么为什么有这两种选择呢?在我的情况下,哪个选项使用正确?

1 个答案:

答案 0 :(得分: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>样式相似。

  

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

判断呼叫,根据哪个错误消息更合适。