many=True源码分析,局部全局钩子源码解析

发布时间 2024-01-09 10:48:35作者: 朱饱饱

1 many=True
-__init__----->一路找到了BaseSerializer---》__new__决定了生成的对象是谁

2 入口是is_valid()---》BaseSerializer--》is_valid---》self._validated_data = self.run_validation(self.initial_data)
-Serializer这个类的:self.run_validation
def run_validation(self, data=empty):
value = self.to_internal_value(data) # 局部字段自己的校验和局部钩子校验
try:
self.run_validators(value)
value = self.validate(value) # 全局钩子的校验
except (ValidationError, DjangoValidationError) as exc:
raise ValidationError(detail=as_serializer_error(exc))
return value