Джанго-отдых, верни заказной Json - PullRequest
0 голосов
/ 04 октября 2019

Привет, у меня есть этот код для внутреннего запроса

class HexList(generics.ListCreateAPIView):
    serializer_class = HexSerializer

    def get_queryset(self):
        hex_list = Hex.objects.filter(game_id=self.kwargs['pk'])
        return hex_list

, который возвращает этот Json:

[
    {
        "id": 2,
        "game_id": 0,
        "position": 3,
        "resource": "NO",
        "token": 0
    },
    {
        "id": 3,
        "game_id": 0,
        "position": 5,
        "resource": "WO",
        "token": 0
    },
    {
        "id": 4,
        "game_id": 0,
        "position": 6,
        "resource": "BR",
        "token": 4
    }
]

То, что я хотел бы вернуть это те же данные, нов форме Json, как-то так:

    "hexes":[
                {
                    "id": 2,
                    "game_id": 0,
                    "position": 3,
                    "resource": "NO",
                    "token": 0
                },
                {
                    "id": 3,
                    "game_id": 0,
                    "position": 5,
                    "resource": "WO",
                    "token": 0
                },
                {
                    "id": 4,
                    "game_id": 0,
                    "position": 6,
                    "resource": "BR",
                    "token": 4
                }
            ]
}

Я пробовал это:

class HexList(generics.ListCreateAPIView):
    serializer_class = HexSerializer

    def get_queryset(self):
        hex_list = Hex.objects.filter(game_id=self.kwargs['pk'])
        return Response({'hexes': hex_list})

И я получаю исключение ContentNotRenderedError

Что я должен делать? Заранее спасибо

1 Ответ

2 голосов
/ 04 октября 2019

Что касается вашего get_queryset метода, он должен возвращать набор запросов, который вы хотите использовать, а не Response. Для ерзания с Response вы должны переписать метод list. Нечто подобное должно работать, но я не проверял.

class HexList(generics.ListCreateAPIView):
    serializer_class = HexSerializer

    def get_queryset(self):
        hex_list = Hex.objects.filter(game_id=self.kwargs['pk'])
        return hex_list

    def list(self, request, *args, **kwargs):
        hexes = self.get_queryset()
        serializer = self.get_serializer(hexes, many=True)
        return Response({'hexes': serializer.data})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...