DRF序列化器在update()上为空OrderedDict

时间:2019-11-03 11:36:04

标签: django django-rest-framework django-serializer

我正在使用 Django 2.x Django REST Framework

class ComponentDataSerializer(serializers.ModelSerializer):
    class Meta:
        model = ComponentData
        fields = [
            'id',
            'analytics_type'
        ]


class ComponentSerializer(serializers.ModelSerializer):

    data = ComponentDataSerializer(many=True)

    class Meta:
        model = Component
        fields = [
            'id',
            'name',
            'group',
            'data',
        ]

    def validate(self, attrs):
        print('validate data: {}'.format(attrs))
        return attrs

对于POST请求,attrs中的validate()

validate data: OrderedDict([('name', 'Component Test'), ('group', <AnalyticsGroup: Chart>), ('data', [OrderedDict([('analytics_type', <AnalyticsType: Bar Chart>)])])])

在收到PATCH请求的同时,data属性具有空的OrderedDict

validate data: OrderedDict([('group', <AnalyticsGroup: Chart>), ('data', [OrderedDict()])])

每个请求中的数据有效载荷都是相同的。

name: "Component Test"
group: "2"
data[0]analytics_type: "3"
data[0]analytics_sub_type: "2"
data[0]query: "9"

每个字段analytics_typeanalytics_sub_typequery的值分别是pk

1 个答案:

答案 0 :(得分:0)

对于遇到类似情况的用户,带有嵌套序列化器的PATCH方法适用于JSON数据,而不适用于表单数据。

我传递了JSON数据而不是邮递员发送的表单数据,并且它可以正常工作。

相关问题