Request.session['some_variable'] TypeError: Объект типа Decimal не является сериализуемым в JSON

Я обновляю код с Django 1.8 и python 2.7 до django 5.0 и python 3.11, в старой версии в некоторых функциях создаются переменные сессии, которые хранят десятичные значения, и после этого происходит редирект, например, так:

request.sessions['decimal_var'] = 1.00
return HttpResponseRedirect('/somepage/')

В старой версии это работает нормально, поэтому 'decimal_var' можно использовать в перенаправляемой странице, но в новой версии (Django 5.0), если я передаю любую сессионную переменную с десятичным значением, выдает такую ошибку:

  File "C:\Python311\Lib\json\__init__.py", line 238, in dumps
    **kw).encode(obj)
          ^^^^^^^^^^^
  File "C:\Python311\Lib\json\encoder.py", line 200, in encode
    chunks = self.iterencode(o, _one_shot=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\json\encoder.py", line 258, in iterencode
    return _iterencode(o, 0)
           ^^^^^^^^^^^^^^^^^
  File "C:\Python311\Lib\json\encoder.py", line 180, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type Decimal is not JSON serializable

Один из вариантов - просто передавать значения int или string, но я думаю, что это не настоящее решение, и почему новые версии не могут управлять десятичными значениями, а старые могут, это может принести больше проблем, если есть необходимость использовать десятичные значения. Есть ли способ управлять десятичными значениями в переменных сессии?

Вернуться на верх