I'm learning drf. I created api using it for minimarket app. After creating some data, i tried to get all of them and i got AssertationError like "You passed a Serializer instance as data, but probably meant to pass serialized .data or .error. representation.
" :( Who knows, what can i do?
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')
As the error says, you can not return a serializer in the response:
return Response(ItemSerializer(items))
You can return the data of the serializer, so:
@api_view(['GET'])
def view_items(request):
# checking for the parameters from the URL
items = Item.objects.all()
serializer = ItemSerializer(items, many=True)
# if there is something in items else raise error
if items:
return Response(serializer.data)
else:
return Response(status=status.HTTP_404_NOT_FOUND)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With