由于你的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在自己的验证中重新执行检查,以及已自动生成的任何其他验证器。



