'Send information with the post method in the rest framework
I want to add a new comment with the post method, but it gives an error
{'non_field_errors': [ErrorDetail(string='Invalid data. Expected a dictionary, but got ModelBase.', code='invalid')]}
Serializers :
from rest_framework import serializers
from .models import Products,ProductsComments
class ProdcutsSerializers(serializers.ModelSerializer):
colors = serializers.SlugRelatedField(many=True,read_only=True,slug_field='name')
category = serializers.SlugRelatedField(many=True,read_only=True,slug_field='name')
sizes = serializers.SlugRelatedField(many=True,read_only=True,slug_field='name')
class Meta:
model = Products
fields = '__all__'
class ProductsCommentsSerializers(serializers.ModelSerializer):
user = serializers.SlugRelatedField(many=True,read_only=True,slug_field='id')
product = serializers.SlugRelatedField(many=True,read_only=True,slug_field='id')
class Meta:
model = ProductsComments
fields = '__all__'
Views :
from rest_framework.decorators import api_view,permission_classes
from rest_framework.response import Response
from rest_framework import status
from .serializers import *
from .models import *
@api_view(['GET'])
def products_list(request):
products = Products.objects.all()
data = ProdcutsSerializers(products,many=True).data
return Response(data)
@api_view(['GET'])
def products_comments_list(request):
products_comments = ProductsComments.objects.all()
data = ProductsCommentsSerializers(products_comments,many=True).data
return Response(data)
@api_view(['POST'])
def products_comments_add(request):
data = ProductsCommentsSerializers(data=ProductsComments)
if data.is_valid():
print('Ok')
else:
print('not')
#print(data)
print(data.errors)
return Response({"M": "not"})
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
