Десятичный не JSON-сериализуемый

У меня есть расчет, который рассчитывает налог, когда пользователь проверяет с помощью Cartridge в качестве основы моего магазина.

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

Расчет работает правильно. Я потом сдаю tax в set_tax(request, _("GST+PST"), tax)

Когда я это делаю, я получаю сообщение об ошибке Decimal('12.0') is not JSON serializable,

Когда я конвертирую его в float (set_tax(request, _("GST+PST"), float(tax)) оно работает; но когда я прохожу проверку, я получаю эту ошибку:

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

В моих настройках:

  • SHOP_DEFAULT_TAX_RATE = 0.12

Я видел решения, где мне нужно использовать пользовательский JSONEncoder, но ошибка происходит внутри самого Django.

Благодарю.

1 ответ

Решение

Это было исправлено пару недель назад, но еще не было выпущено:

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

К счастью, вы можете добавить версию для разработки прямо сейчас.

Кстати, десятичный - это правильный тип для использования.

Другие вопросы по тегам