Skip to content Skip to sidebar Skip to footer

How Can I Change Part Of A Django Rest Framework Json Response From A List To A Dictionary?

More specifically, I need a nested part of my response to be a multi-item dictionary rather than a list of many single-item dictionaries. I am returning all the data I want, but I

Solution 1:

Turns out what I needed to do is use the code provided by Dmitry Kovriga not in a new custom ListSerializer, but rather in the view itself after serialization has occurred.

updated views.py

class ProjectViewSet(viewsets.ViewSet):
    ...

    @detail_route(methods=['get'])
    def uielements(self, request, pk=None):
        uielements = UIElementFilterSet(params)
        serializer = serializers.UIElementProjectSerializer(uielements, many=True)
        result = {}
        for element in serializer.data:
            for key, value in element.items():
                result[key] = value
        return Response({"uielements": result})

Solution 2:

You can write custom ListSerializer for UIElementProjectSerializer and override it's to_representation method

classUIElementProjectListSerializer(serializers.ListSerializer):

    def to_representation(self, data):
        result = {}
        for element insuper(UIElementProjectListSerializer, self).to_representation():
            for key, value in element.items():
                result[key] = value
        return result

classUIElementProjectSerializer(serializers.ModelSerializer):
    class Meta:
        list_serializer_class = UIElementProjectListSerializer
        ...

Post a Comment for "How Can I Change Part Of A Django Rest Framework Json Response From A List To A Dictionary?"