Как решить 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 шт):
round() в качестве аргумента принимает вещ.число (float) и операции между Decimal и float невозможны. Вам нужно привести их к одному виду
Decimal(round(float(obj.total_price) * 100 / float(discount_revers) - float(obj.total_price), 2))