DRF将我的嵌套字段包括为经过验证的数据中的空列表,即使未包含在初始数据中

时间:2018-08-06 17:20:26

标签: django-rest-framework nested

我正在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)

那我绝对没有问题,如果嵌套字段不在初始数据中,那么它将从已验证的数据中完全忽略(不仅仅是空列表)。

解决了我的问题,但是有人可以向我解释这里发生了什么吗?

0 个答案:

没有答案