我正在序列化程序中执行自定义字段级验证,该验证需要引用另一个字段。
查看Validation documentation中的示例,我不清楚应该使用validate_<fieldname>
还是validate
。看起来两者都具有attrs
字典,因此从validate_<fieldname>
中,我可以像从validate
中一样轻松地引用另一个字段(即使validate
的说明表明您应该使用它来访问多个字段)。那么为什么同时有这两种选择呢?就我而言,哪个选项正确使用?
最佳答案
在ValidationError
中提高validate_<foo>()
会导致字段错误。
{'foo': ['Not a fooish value.']}
在
ValidationError
中提高validate()
会导致非字段错误。{'non_field_errors': ['Foo and bar are not compatible.']}
So why are there both options?
部分是由于上述原因,部分是因为序列化器API在可能的情况下镜像了Django的表单API。需要的地方有一些区别,但是
validate
和validate_<foo>
样式相似。In my case, which option is correct to use?
您根据哪个错误消息更合适来判断调用。
关于validation - Django REST框架: What's really the difference between validate_<fieldname> and validate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18482220/