通过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 []