灰太狼爱上美羊羊 2021-12-20 23:57 采纳率: 66.7%
浏览 31
已结题

django3.2.6 异常,实在不知道啥原因了,求解,如何解决?

问题是出在这行:
        
**product = product_serializers.save()**

```python
class productAddAPIView(APIView):
    def post(self, request):
        product_serializers = productModelSerializers(data=request.data)
        if product_serializers.is_valid(raise_exception=True):
            product_info = product_serializers.save()
            return ApiResponse(results=product_info )


```python
class product(models.Model):
    product_name = models.CharField(max_length=50, verbose_name='产品名称')

    class Meta:
        db_table = "product"

class productModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = product
        fields = '__all__'


调用接口后报错:

Traceback (most recent call last):
File "D:\Program Files\Python\Python37\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
response = get_response(request)
File "D:\Program Files\Python\Python37\lib\site-packages\django\core\handlers\base.py", line 204, in get_response
response = response.render()
File "D:\Program Files\Python\Python37\lib\site-packages\django\template\response.py", line 105, in render
self.content = self.rendered_content
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\response.py", line 70, in rendered_content
ret = renderer.render(self.data, accepted_media_type, context)
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\renderers.py", line 103, in render
allow_nan=not self.strict, separators=separators
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\utils\json.py", line 25, in dumps
return json.dumps(*args, **kwargs)
File "D:\Program Files\Python\Python37\lib\json_init
.py", line 238, in dumps
**kw).encode(obj)
File "D:\Program Files\Python\Python37\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "D:\Program Files\Python\Python37\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "D:\Program Files\Python\Python37\lib\site-packages\rest_framework\utils\encoders.py", line 67, in default
return super().default(obj)
File "D:\Program Files\Python\Python37\lib\json\encoder.py", line 179, in default
raise TypeError(f'Object of type {o.class.name} '
TypeError: Object of type product is not JSON serializable

  • 写回答

2条回答 默认 最新

  • 关注
    class productAddAPIView(APIView):
        def post(self, request):
            product_serializers = productModelSerializers(data=request.data)
            if product_serializers.is_valid(raise_exception=True):
                try:
                    # 如果你想返回操作状态,加上判断报错,报错即未成功,为报错即成功,字典中还可以加上其他数据
                    # save()后会返回一个model对象,对象是不能够json序列化的,所以不能直接使用save返回的对象当做json返回前端
                    product_serializers.save()
                    
                    product_info = {"code":"200","data":"操作成功"}
                except Exception as e:
                    product_info = {"code": "2001","data":f"操作失败{e}"}
    
                return ApiResponse(results=product_info )
    

    上面这段代码可以帮你,有帮助请点击右上角的采纳,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 修改了问题 12月21日
  • 创建了问题 12月20日

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法