validation - Django REST框架: What's really the difference between validate_<fieldname> and validate?

标签 validation django-rest-framework

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

查看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。需要的地方有一些区别,但是validatevalidate_<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/

相关文章:

php - 一个提交按钮需要一种形式的输入字段,但其他按钮不需要?

ruby-on-rails - 如果 rails 中的所有空字符串,则停止保存记录

python - Django url 中的多个 pks

python - 检查 Django REST Framework 中相关对象的权限

python - 如何重定向?映射? Django 中的网址

python - 将模型字段序列化为嵌套对象/字典

java - @Valid 注释在 spring boot 中不起作用

javascript - html 表单验证(使用 jquery.validate.js)在某些情况下不起作用

python - Django 序列化程序方法字段

symfony - 在运行时更改 Symfony2 范围验证器的最小值/最大值