5-2 ImageFieldFile is not JSON serializable

来源:5-3 django的serializer序列化model

安福院长

2017-09-05

在这里遇到了 以下问题,请问如何解决

TypeError: Object of type 'ImageFieldFile' is not JSON serializable

[05/Sep/2017 23:48:20] "GET /goods/ HTTP/1.1" 500 135325

[05/Sep/2017 23:48:20] "GET /favicon.ico HTTP/1.1" 404 2327


GoodsListView代码如下:


class GoodsListView(View):
   def get(self, request):
       json_list = []
       goods = Goods.objects.all()[:10]
       # for good in goods:
       #     json_dict = {}
       #     json_dict['name'] = good.name
       #     json_dict['category'] = good.category.name
       #     json_dict['market_price'] = good.market_price
       #     json_list.append(json_dict)
       from django.forms.models import model_to_dict
       for good in goods:
           json_dict = model_to_dict(good)
           json_list.append(json_dict)


       from django.http import HttpResponse
       return HttpResponse(json.dumps(json_list), content_type='application/json')


Goods Model 如下:


class Goods(models.Model):
   category = models.ForeignKey(GoodsCategory, verbose_name='商品类别')
   goods_sn = models.CharField(max_length=30, default="", verbose_name='商品编码')
   name = models.CharField(default="", max_length=30, verbose_name='商品名称', help_text='商品名称')
   click_num = models.IntegerField(default=0, verbose_name='点击数')
   fav_num = models.IntegerField(default=0, verbose_name='收藏数')
   sold_num = models.IntegerField(default=0,verbose_name='售卖个数')
   goods_num = models.IntegerField(default=0,verbose_name='库存数量')
   market_price = models.FloatField(default=0,verbose_name='市场价')
   shop_price = models.FloatField(default=0,verbose_name='商店价')
   goods_brief = models.TextField(default=0,verbose_name='商品简介')
   goods_desc = UEditorField(verbose_name='内容', imagePath='goods/images/', width=1000, height=800, filePath='goods/files/', default="")
   goods_front_image = models.ImageField(upload_to='goods/images/', null=True, blank=True, verbose_name='商品图片')
   ship_free = models.BooleanField(default='False', verbose_name='是否免邮')
   is_new = models.BooleanField(default=False, verbose_name='是否新品')
   is_hot = models.BooleanField(default=False, verbose_name='是否热销')

   add_time = models.DateTimeField(auto_now_add=True, verbose_name='添加时间')



写回答

2回答

吴大宝100

2018-01-18

你好 你是怎么解决的呢 方便告诉一下么

0
0

安福院长

提问者

2017-09-06

解决了..

0
1
bobby
好的,
2017-09-06
共1条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2895 学习 · 2481 问题

查看课程