Django 类型为'的对象;菜单';JSON不可序列化

Django 类型为'的对象;菜单';JSON不可序列化,django,django-rest-framework,Django,Django Rest Framework,我用Django Rest框架制作了简单的api [models.py] from django.db import models class Menu(models.Model): place = models.CharField(max_length=20, primary_key=True) mon = models.CharField(max_length=3000) tue = models.CharField(max_length=3000) wed

我用Django Rest框架制作了简单的api

[models.py]

from django.db import models

class Menu(models.Model):
    place = models.CharField(max_length=20, primary_key=True)
    mon = models.CharField(max_length=3000)
    tue = models.CharField(max_length=3000)
    wed = models.CharField(max_length=3000)
    thu = models.CharField(max_length=3000)
    fri = models.CharField(max_length=3000)
    sat = models.CharField(max_length=3000)
    sun = models.CharField(max_length=3000)
[序列化程序.py]

from rest_framework import serializers
from . import models

class MenuSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.Menu
        fields = '__all__'
[url.py]

from django.conf.urls import url
from django.urls import path
from . import views

urlpatterns = [
    path('', views.Menu.as_view(), name='menu')
]
[views.py]

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from . import models

class Menu(APIView):
    def get(self, request, format=None):
        all_menu = models.Menu.objects.all()

        return Response(status=status.HTTP_200_OK, data=all_menu)
当我连接到/menu时,它会抛出

TypeError at /menu/
Object of type 'Menu' is not JSON serializable

如何解决此问题?

您正试图直接传递为响应查询集。但queryset不是可序列化对象。这就是为什么需要序列化程序

只需序列化数据,然后使用serializer类将其作为响应返回,如下所示:

class Menu(APIView):
    def get(self, request, format=None):
        all_menu = models.Menu.objects.all()
        serializer = MenuSerializer(all_menu, many=True)  
        return Response(data=serializer.data, status=status.HTTP_200_OK)