将额外的参数传递给Django Rest Framework中的嵌套Serializer

时间:2016-08-12 18:54:44

标签: python django django-rest-framework

我有这样的序列化器:

 class FirstModelSerializer(serializers.ModelSerializer):

       secondModel = SecondModelSerializer()

       class Meta:
            model = FirstModel
            fields = '__all__'

其中secondModel是FirstModel的ManyToMany字段。

有没有办法将FirstModel对象id传递给SecondModelSerializer?

1 个答案:

答案 0 :(得分:4)

我想的比较容易。我只需要使用像这样的上下文

class FirstModelSerializer(serializers.ModelSerializer):

      secondModel = SerializerMethodField()

      class Meta:
            model = FirstModel
            fields = '__all__'

      def get_secondModel(self, obj):
          return SecondModelSerializer(obj.secondModel.all(), many=True, context={'first_model_id': obj.id)).data

在SecondModelSerializer中使用self.context.get('first_model_id')来获取此ID。