DjangoRestFramework:向serializer中添加额外参数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010377372/article/details/80847710

通过context字段可以达到向serializer中传递参数的问题

示例代码:

serializer = DeviceByTypeSerializer(device_type, many=True, context={'id': pl.id})

而在serializer中使用示例代码如下:

class DeviceByTypeSerializer(serializers.ModelSerializer):
    devices = serializers.SerializerMethodField('get_pl_ds')

    class Meta:
        model = DeviceType
        fields = ('name', 'devices')

    def get_pl_ds(self, obj):
        try:
            pl_ds_queryset = obj.devices.filter(pl_belong=self.context['id'])
            if pl_ds_queryset.exists():
                print(pl_ds_queryset)
                serializer = DeviceSerializer(instance=pl_ds_queryset, context=self.context, many=True)
                return serializer.data
            else:
                print(pl_ds_queryset)
                return []
        except Exception as e:
            print(e)
            return []

猜你喜欢

转载自blog.csdn.net/u010377372/article/details/80847710