由于您的
username字段很可能已
unique=True设置,因此Django
REST框架会自动添加一个验证程序,该验证程序将检查以确保新用户名是唯一的。实际上,您可以通过进行确认
repr(serializer()),这将向您显示所有自动生成的字段,其中包括验证程序。
验证按特定的,未记录的顺序运行
- 字段反序列化称为(
serializer.to_internal_value
和field.run_validators
) serializer.validate_[field]
被称为每个领域- 称为序列化器级别的验证器(
serializer.run_validation
后跟serializer.run_validators
) serializer.validate
叫做
因此,您看到的问题是在序列化程序级别的验证之前调用了字段级别的验证。尽管我不建议这样做,但是您可以通过
extra_kwargs在serilalizer的meta中进行设置来删除字段级验证器。
class meta: extra_kwargs = { "username": { "validators": [], }, }
但是,您将需要
unique在自己的验证中重新执行检查,以及自动生成的任何其他验证器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)