我有一个计算,用于在用户使用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本身。
感谢。
答案 0 :(得分:3)
这是几周前修复的,但还没有发布:
https://github.com/stephenmcd/cartridge/commit/628bd203f39a62d9de2613de7057e6742657111f
幸运的是,您现在可以将开发版本添加为依赖项。
BTW decimal是要使用的正确类型。