DRF Serializer пустой OrderedDict при обновлении () - PullRequest
0 голосов
/ 03 ноября 2019

Я использую 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()is

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_type, analytics_sub_type и query равно pk соответственно.

1 Ответ

0 голосов
/ 14 ноября 2019

Для тех, кто застрял в подобной ситуации, метод PATCH с вложенным сериализатором работает с данными JSON, а не с данными формы.

Я передал данные JSON вместо данных формыот почтальона и все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...