Динамический доступ к полям в django serilaizer

Я пытаюсь получить доступ к полям модели динамически (на основе вызова из фронтенда) в сериализаторе, но не могу этого сделать

код:

class DynamicFieldsModelSerializer(serializers.ModelSerializer):

    def __init__(self, *args, **kwargs):
        super(DynamicFieldsModelSerializer, self).__init__(*args, **kwargs)
        print("self", self)
        fields = self.context['request'].query_params.get('fields')
        if fields:
            fields = fields.split(',')
            # Drop any fields that are not specified in the `fields` argument.
            allowed = set(fields)
            existing = set(self.fields.keys())
            for field_name in existing - allowed:
                self.fields.pop(field_name)

class ProductTestSerializer(DynamicFieldsModelSerializer, serializers.ModelSerializer):

    class Meta:
        model = Product
        fields = ("id",)

class ProductTestAPIView(generics.ListAPIView):

    def get(self, request):
        obj = Product.objects.all()
        data = ProductTestSerializer(obj, many=True)
        s_data = data.data
        return Response(s_data)

URL:

http://127.0.0.1:8000/products-test/?fields=id,short_code

Выдает следующую ошибку:

KeyError: 'request'

at

fields = self.context['request'].query_params.get('fields')

Передайте запрос при вызове DynamicFieldsModelSerializer, вот так:

serializer = DynamicFieldsModelSerializer(request.data, context={'request': request})
Вернуться на верх