程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ProductImage 类型的对象不是 JSON 可序列化的大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Productimage 类型的对象不是 JSON 可序列化的?

开发过程中遇到Productimage 类型的对象不是 JSON 可序列化的的问题如何解决?下面主要结合日常开发的经验,给出你关于Productimage 类型的对象不是 JSON 可序列化的的解决方法建议,希望对你解决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,请注明来意。