Django REST Framework中序列化程序验证的顺序

Django REST Framework中序列化程序验证的顺序,第1张

Django REST Framework中序列化程序验证的顺序

由于您的

username
字段很可能已
unique=True
设置,因此Django
REST框架会自动添加一个验证程序,该验证程序将检查以确保新用户名是唯一的。实际上,您可以通过进行确认
repr(serializer())
,这将向您显示所有自动生成的字段,其中包括验证程序。

验证按特定的,未记录的顺序运行

  1. 字段反序列化称为(
    serializer.to_internal_value
    field.run_validators
  2. serializer.validate_[field]
    被称为每个领域
  3. 称为序​​列化器级别的验证器(
    serializer.run_validation
    后跟
    serializer.run_validators
  4. serializer.validate
    叫做

因此,您看到的问题是在序列化程序级别的验证之前调用了字段级别的验证。尽管我不建议这样做,但是您可以通过

extra_kwargs
在serilalizer的meta中进行设置来删除字段级验证器。

class meta:    extra_kwargs = {        "username": { "validators": [],        },    }

但是,您将需要

unique
在自己的验证中重新执行检查,以及自动生成的任何其他验证器。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5623559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存