十进制不是JSON可序列化的

时间:2014-03-13 19:47:05

标签: python json django mezzanine cartridge

我有一个计算,用于在用户使用Cartridge作为我的商店框架结帐时计算税金。

tax = tax * Decimal(str(settings.SHOP_DEFAULT_TAX_RATE))

计算正常。然后我将tax传递给set_tax(request, _("GST+PST"), tax)

当我这样做时,我收到错误Decimal('12.0') is not JSON serializable

当我将它转换为浮点数时(set_tax(request, _("GST+PST"), float(tax))它可以正常工作;但是当我通过结账时,我收到此错误:

unsupported operand type(s) for +=: 'Decimal' and 'float'

在我的设置中:

  • SHOP_DEFAULT_TAX_RATE = 0.12

我已经看到了需要使用自定义JSONEncoder的解决方案,但错误发生在Django本身。

感谢。

1 个答案:

答案 0 :(得分:3)

这是几周前修复的,但还没有发布:

https://github.com/stephenmcd/cartridge/commit/628bd203f39a62d9de2613de7057e6742657111f

幸运的是,您现在可以将开发版本添加为依赖项。

BTW decimal是要使用的正确类型。