Ошибка типа: объект типа 'Пользователь' не поддерживает сериализацию в формате JSON - PullRequest
2 голосов
/ 20 мая 2019

Как вернуть список объектов в Django Rest Framework. Я вызываю функцию, которая возвращает список объектов.

from rest_framework.views import APIView
from rest_framework.response import Response
import json

class MyView(APIView):
    from .serializers import MySerializer
    from app.permissions import MyPermissionClass
    from .models import MyModel

    serializer_class = MySerializer
    queryset = MyModel.objects.all()
    permission_classes = (MyPermissionClass,)
    pagination_class = None

    def get(self, request, *args, **kwargs):
        data=myfunction(a,b,c)
        # data={list}<class 'list'>: [<User: Negiiii | negiiii>, <User: Negiiii | negiiii>]
        data=json.dumps(data)
        return Response({"data":data})

Результат, который мне нужен:

[
  {
    "name":"Negi",
    "rollno":14
   },
  {
    "name":"Negi",
    "rollno":13
  }
]

1 Ответ

3 голосов
/ 20 мая 2019

Вы можете использовать сериализаторы DRF для сериализации данных. Сначала вам нужно определить класс сериализатора как

# serializers.py
from rest_framework import serializers


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserModel
        fields = ('name', 'rollno')

, а затем используйте UserSerializer в ваших представлениях как,

def get(self, request, *args, **kwargs):
    data = myfunction(a, b, c)
    <b>response_data = UserSerializer(data, many=True)</b>
    return Response(<b>{"data": response_data.data}</b>)
...