Tom Finet
Tom Finet

Reputation: 2136

How to restructure JSON in django view before response is sent?

I have a django view which returns a list of FriendshipRequest model instances as JSON.

class ListUnseenFriendRequests(generics.GenericAPIView):
    permission_classes = (IsAuthenticated,)

    def get(self, request, format=None):
        friendship_requests_list = json.loads(serializers.serialize('json', Friend.objects.unread_requests(user=request.user)))
        return JsonResponse(friendship_requests_list, safe=False)

The JSON response looks like this:

[
    {
        "pk": 8,
        "model": "friendship.friendshiprequest",
        "fields": {
            "created": "2017-07-27T14:02:28.492Z",
            "rejected": null,
            "to_user": 4,
            "from_user": 6,
            "message": "",
            "viewed": null
        }
    },
    {
        "pk": 20,
        "model": "friendship.friendshiprequest",
        "fields": {
            "created": "2017-07-31T08:03:27.887Z",
            "rejected": null,
            "to_user": 4,
            "from_user": 14,
            "message": "",
            "viewed": null
        }
    }
]

However I would like to have the response look like this:

[
    {
        "pk": 8,
        "created": "2017-07-27T14:02:28.492Z",
        "to_user": 4,
        "from_user": 6,

    },
    {
        "pk": 20,
        "created": "2017-07-31T08:03:27.887Z",
        "to_user": 4,
        "from_user": 14,
    }
]

How can I do this in the view before the response is sent?

Upvotes: 0

Views: 83

Answers (1)

Wonjin
Wonjin

Reputation: 432

You just need to rebuild the json data. Before return your JsonResponce, you may do like this

new_json_list = [{"pk": x["pk"], \
             "created": x["fields"]["created"], \
             "to_user": x["fields"]["to_user"], \
             "from_user": x["fields"]["from_user"]} \
           for x in friendship_requests_list]

Upvotes: 1

Related Questions