【Django】【MySQL】Django中使用MySQL Decimal数据后报错Object of type Decimal is not JSON serializable解决办法

其实这个错误用不着去修改数据库中的数据类型

当MySQL里面的Decimal类型需要传入request进行暂存时,Django的框架会调用一个json.dumps

可以发现这里user_id是Decimal('0'),麻中麻

把Decimal类型的数据按照情况,转换成int、float、str进行保存就行了

这样传request参数的时候就可以正常传入啦!

改完这个之后就可以正常运行了

看到之前写的好多博客

如果是我们手动使用json.dumps的话,里面如果有Decimal也会报这个错

大部分博客通过向json.dumps里面的传入自定义的cls类解决了这个问题

但这个方法在Django框架下并不好使用,因为json.dumps被封装了非常多层,很难找到从request中传入Decimal元素序列化类的接口,所以,在传入的时候把Decimal值手动修改一下,就可以避免这种问题。

还有小部分博客直接把数据库里面所有Decimal全部改成了str,由于改这个的话相当于得从ER层开始全部修改,数据库设计就前功尽弃了,所以我没舍得改。后来发现了问题的原因在于request传参,这才恍然大悟,只需要把传入request的Decimal参数转一下类型就行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值