Как решить decimal.InvalidOperation на сервере?

Инфо: Есть сайт-фронт на реакте, с сайтом-бэком на джанго. При оформлении заказа сваливается 500 с ошибкой InvalidOperation at /api/orders/ [<class 'decimal.InvalidOperation'>]

Дополнительна инфо: При переносе обоих сайтов на локальный тестовый сервер все работает, на ливе же проблемы с decimal. Контейнеры одни и те же, код один и тот же

Принятые меры: Строки вида

round(Decimal((obj.total_price * 100)) / discount_revers - Decimal(obj.total_price), 2)

преобразовывал в

round(((Decimal(obj.total_price) * Decimal(100))) / discount_revers - Decimal(obj.total_price), 2)

но эффекта не возымело. Также, перезапускал контейнеры, как на ливе, так и на тестовом, с тем же эффектом.

Вопрос: можно ли решить эту проблему, и если да, то как?


Ответы (1 шт):

Автор решения: Za Ars

round() в качестве аргумента принимает вещ.число (float) и операции между Decimal и float невозможны. Вам нужно привести их к одному виду

Decimal(round(float(obj.total_price) * 100 / float(discount_revers) - float(obj.total_price), 2))

→ Ссылка