【问题标题】:django rest framework 3.1 - ModelSerializer - multiple update of nested representationsdjango rest framework 3.1 - ModelSerializer - 嵌套表示的多次更新
【发布时间】:2018-08-26 21:11:36
【问题描述】:

在我的 ModelSerializer 中,我有一个带有 many=True 的嵌套 ModelSerialier。问题是如何在 update 方法中更新所有嵌套实例?

class ProfileSerializer(serializers.ModelSerializer):
    things = serializers.ThingsSerializer(many=True)


    def update(self, instance, validated_data):
        things_data = validated_data.pop('things')
        instance = super(ProfileSerializer, self).update(instance, validated_data)

        # here i can't access to ids of things as this is read-only field and it isn't passed to validated_data

        return instance

【问题讨论】:

  • 嗨@lofi,你知道怎么做吗?我只是被困在同一个地方。我无法访问 id,因为它们没有传递给 valid_data。是否有必要创建自定义验证方法?

标签: python serialization django-rest-framework


【解决方案1】:

正如你所说,由于 id 是只读的,它不会通过验证数据。我设法完成它的唯一方法(几个小时后......)是将 id 设为 integerField:

class ProfileSerializer(serializers.ModelSerializer):
    things = serializers.ThingsSerializer(many=True)
    id = serializers.IntegerField() # Do this for avoid read-only id!


    def update(self, instance, validated_data):
        things_data = validated_data.pop('things')
        instance = super(ProfileSerializer, self).update(instance, validated_data)

        things_id = things_data['id'] # Now this is possible!

        return instance

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2014-10-08
    • 2017-03-21
    • 2016-09-20
    • 1970-01-01
    • 2014-11-09
    • 2014-09-21
    • 2016-02-09
    • 2017-12-03
    相关资源
    最近更新 更多