其实这个错误用不着去修改数据库中的数据类型
当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参数转一下类型就行了。