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?"