总结:通过源码分析,得出序列化器的使用流程,加深理解,可将实际的需求加入到代码中,合理利用,提高效率。
1.在视图中创建序列化对象:
serializer = self.get_serializer(data=request.data)
2.通过序列化器的is_valid方法可以校验数据的正确性
serializer.is_valid(raise_exception=True)
3.通过BaseSerializer的save()方法,对传入数据的操作进行判断:
if self.instance is not None:
self.instance = self.update(self.instance, validated_data)
assert self.instance is not None, (
'`update()` did not return an object instance.'
)
else:
self.instance = self.create(validated_data)
assert self.instance is not None, (
'`create()` did not return an object instance.'
)
解析:通过创建序列化器时传入的参数进行判断,使用序列化器的create方法还是update方法。
作用:可对序列化器的create方法重写和update方法重写业务逻辑有所帮助。