【问题标题】:DRF Serializer empty OrderedDict on update()DRF 序列化器在 update() 上为空 OrderedDict
【发布时间】:2019-11-14 13:46:28
【问题描述】:

我正在使用 Django 2.xDjango REST 框架

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 请求,validate() 中的attrs

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

【问题讨论】:

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


    【解决方案1】:

    对于那些陷入类似情况的人,带有嵌套序列化程序的 PATCH 方法适用于 JSON 数据,而不适用于表单数据。

    我通过JSON 数据而不是来自邮递员的表单数据并且它正在工作。

    【讨论】:

      猜你喜欢
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2019-11-22
      相关资源
      最近更新 更多