我正在DRF中使用可写的嵌套序列化器。
class SoloExhibitionSerializer(serializers.ModelSerializer):
class Meta:
model = SoloExhibition
fields = ('name', 'date')
class UserCVSerializer(serializers.ModelSerializer):
solo_exhibitions = SoloExhibitionSerializer(many=True)
.
.
.
在我的PATCH视图中,我执行serializer = self.get_serializer(usercv_instance, data=request.data, partial=True)
。
但是我发现,即使我仅更新solo_exhibitions
以外的其他字段,DRF也不跳过该字段,即使它不在初始数据中,而是将其作为空白列表包含在validated_data
中,这导致我的逻辑一直将solo_exhibitions
设置为空,除非我明确地将所有数据与每个PATCH一起包含。
但是我发现如果我初始化序列化程序
serializer = self.get_serializer(usercv_instance, OrderedDict(data=request.data), partial=True)
那我绝对没有问题,如果嵌套字段不在初始数据中,那么它将从已验证的数据中完全忽略(不仅仅是空列表)。
解决了我的问题,但是有人可以向我解释这里发生了什么吗?