大佬教程收集整理的这篇文章主要介绍了ProductImage 类型的对象不是 JSON 可序列化的,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我收到此错误 Object of type Productimage is not JsON serializable
我正在尝试制作模型,我可以在其中使用 ManytoManyFeild() 添加多个图像。然后我想对其进行序列化,以便将其发送到前端页面并显示。
这是我的模型:
from django.db import models
class Product(models.Model):
ID = models.IntegerFIEld(unique=True,priMary_key=TruE)
title = models.CharFIEld(max_length=200)
description = models.TextFIEld(max_length= 100000,null=True,blank=TruE)
price = models.floatFIEld()
count = models.IntegerFIEld(default=1)
file_content = models.ManyToManyFIEld("Productimage",related_name='file_content',blank=True,null=TruE)
offer= models.BooleanFIEld(default=falsE)
def __str__(self):
return self.title
class Productimage(models.Model):
property_ID = models.ForeignKey(Product,on_delete=models.CASCADE,blank=TruE)
media = models.fileFIEld(upload_to='pics')
def __str__(self):
return '%s-image' % (self.property_ID.titlE)
这是我的serializer.py:
from rest_framework import serializers
from . models import Product,Productimage
class Productimageserializer(serializers.Modelserializer):
class Meta:
model = Productimage
fIElds = [ 'property_ID','media']
class Productserializer(serializers.Modelserializer):
file_content = Productimageserializer(many=TruE)
class Meta:
model = Product
fIElds = ['ID','title','description','price','count','file_content','offer']
extra_kwargs = {
"file_content": {
"required": false,}
}
这是我的VIEws.py:
from rest_framework.serializers import serializer
from . models import Product,Productimage
from rest_framework.response import Response
from . serializer import Productserializer
from rest_framework import status
from rest_framework.parsers import MultiPartParser,FormParser
from rest_framework.decorators import API_vIEw,permission_classes,parser_classes
from rest_framework.permissions import IsAuthenticated
@API_vIEw(['POST','GET'])
@permission_classes([IsAuthenticated])
@parser_classes([MultiPartParser,FormParser])
def ProductVIEws(request):
if request.method == 'POST':
files = request.files.getList('file_content')
if files:
request.data.pop('file_content')
serializer = Productserializer(data=request.data)
if serializer.is_valID():
serializer.save()
tweet_qs = Product.objects.get(ID=serializer.data['ID'])
uploaded_files = []
for file in files:
content = Productimage.objects.create(media=filE)
uploaded_files.append(content)
tweet_qs.file_content.add(*uploaded_files)
context = serializer.data
context["file_content"] = [file.ID for file in uploaded_files]
return Response(context,status=status.http_201_CREATED)
return Response(serializer.errors,status=status.http_400_BAD_requEST)
else:
serializer = Productserializer(data=request.data)
if serializer.is_valID():
serializer.save()
context = serializer.data
return Response(context,status=status.http_400_BAD_requEST)
elif request.method == 'GET':
detail = [{"title": detail.title,"ID": detail.ID,"count": detail.count,"description": detail.description,"price": detail.price,"offer": detail.offer,"details": detail.file_content.all()}
for detail in Product.objects.all()]
return Response(detail)
我不知道有什么问题,所以如果能帮到你,我将非常感激。谢谢
注意:如果您知道制作包含图像列表的 Json 的其他更好方法,您也可以分享它(或其链接)。
这可能对您有所帮助:
class Productimage(models.Model): property_id = models.ForeignKey(Product,on_delete=models.CASCADE,null=True,blank=TruE) media = models.FileField(upload_to='pics')
def __str__(self):
return '%s-image' % (self.property_id.titlE)
def media_url(self):
return self.media.url
class Productimageserializer(serializers.Modelserializer):
class Meta:
model = Productimage
fields = [ 'property_id','media','media_url']
以上是大佬教程为你收集整理的ProductImage 类型的对象不是 JSON 可序列化的全部内容,希望文章能够帮你解决ProductImage 类型的对象不是 JSON 可序列化的所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。