Django Данные запроса Rest Framework не json Серийная ошибка - PullRequest
0 голосов
/ 02 мая 2020

Это мои взгляды:

class BillDetailView(APIView):
    serializer_class = BillSerializer

    def get(self, request, format=None):
        bill = Bill.objects.get(flat__id='a flat id')
        return Response(bill)

Я знаю, что для получения подробных данных мы можем использовать RetriveAPIView, но я не буду использовать его по некоторым причинам для моей бизнес-логики c.

Именно поэтому я использую APIView

Я пытаюсь ответить на данные запроса, как вы видите, но выдает следующую ошибку:

Object of type 'Bill' is not JSON serializable

Может кто-нибудь помочь мне, как Отвечать на данные запроса?

Если я передам словарь в методе Response, он будет работать отлично, но это плохая практика для моего случая.

Я просто передаю запрашиваемые данные в Response метод. Может ли кто-нибудь помочь мне в этом случае?

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Сериализация объекта bill с использованием BillSerializer


#views.py
class BillDetailView(APIView):
    serializer_class = BillSerializer

    def get(self, request, format=None):
        bill = Bill.objects.get(flat__id='a flat id')
        return Response(<b>self.serializer_class(bill).data</b>)
0 голосов
/ 02 мая 2020
from rest_framework import generics

class BillDetailView(generics.RetrieveAPIView):
        serializer_class = BillSerializer

        def get_object(self):
            return Bill.objects.get(id=self.kwargs['pk'])

Просмотр должен возвращать ответ в формате json. Когда вы наследуете APIView, вам придется явно вызывать класс сериализатора для объекта. Если вы используете generics, вам не нужно об этом беспокоиться.

...