断言错误,您将 Serializer 实例作为数据传递,但可能意味着传递序列化的“.data”或“.error”。表示
Assertation Error, You passed a Serializer instance as data, but probably meant to pass serialized `.data` or `.error`. representation
我正在学习 drf。我用它创建了 api 迷你市场应用程序。创建一些数据后,我试图获取所有这些数据,但我得到了 AssertationError,例如“您将一个 Serializer 实例作为数据传递,但可能意味着传递序列化的 .data
或 .error
。表示。
“ :( 谁知道,我能做什么?
views.py
@api_view(['GET'])
def view_items(request):
# checking for the parameters from the URL
items = Item.objects.all()
# if there is something in items else raise error
if items:
return Response(ItemSerializer(items))
else:
return Response(status=status.HTTP_404_NOT_FOUND)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.ApiOverview, name='home'),
path('create/', views.add_items, name='add-items'),
path('all/', views.view_items, name='view_items'),
]
serializers.py
from pyexpat import model
from django.db.models import fields
from rest_framework import serializers
from .models import Item
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('category', 'subcategory', 'name', 'amount')
如错误所述,您不能 return 响应中的序列化程序:
return Response(ItemSerializer(items))
你可以return序列化器的数据,所以:
@api_view(['GET'])
def view_items(request):
# checking for the parameters from the URL
items = Item.objects.all()
serializer = ItemSerializer(items<strong>, many=True</strong>)
# if there is something in items else raise error
if items:
return Response(<strong>serializer.data</strong>)
else:
return Response(status=status.HTTP_404_NOT_FOUND)
我正在学习 drf。我用它创建了 api 迷你市场应用程序。创建一些数据后,我试图获取所有这些数据,但我得到了 AssertationError,例如“您将一个 Serializer 实例作为数据传递,但可能意味着传递序列化的 .data
或 .error
。表示。
“ :( 谁知道,我能做什么?
views.py
@api_view(['GET'])
def view_items(request):
# checking for the parameters from the URL
items = Item.objects.all()
# if there is something in items else raise error
if items:
return Response(ItemSerializer(items))
else:
return Response(status=status.HTTP_404_NOT_FOUND)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.ApiOverview, name='home'),
path('create/', views.add_items, name='add-items'),
path('all/', views.view_items, name='view_items'),
]
serializers.py
from pyexpat import model
from django.db.models import fields
from rest_framework import serializers
from .models import Item
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ('category', 'subcategory', 'name', 'amount')
如错误所述,您不能 return 响应中的序列化程序:
return Response(ItemSerializer(items))
你可以return序列化器的数据,所以:
@api_view(['GET'])
def view_items(request):
# checking for the parameters from the URL
items = Item.objects.all()
serializer = ItemSerializer(items<strong>, many=True</strong>)
# if there is something in items else raise error
if items:
return Response(<strong>serializer.data</strong>)
else:
return Response(status=status.HTTP_404_NOT_FOUND)