Django - Объект типа Decimal не является сериализуемым в JSON
Я получил ошибку:
TypeError at /cart/
Object of type Decimal is not JSON serializable
Request Method: GET
Request URL: http://127.0.0.1:8000/cart/
Django Version: 4.0.4
Exception Type: TypeError
Exception Value:
Object of type Decimal is not JSON serializable
Дело в том, что я храню избранное и корзину в одной сессии, и когда одна из них не заполнена (избранное/корзина), появляется эта ошибка. Когда товары находятся в обоих списках, все в порядке.
allow_nan
True
check_circular
True
cls
<class 'json.encoder.JSONEncoder'>
default
None
ensure_ascii
True
indent
None
kw
{}
obj
{'cart': {'2': {'price': Decimal('123123.12'),
'product': <Product: test1>,
'quantity': 2,
'total_price': Decimal('246246.24'),
'update_quantity_form': <CartAddProductForm bound=False, valid=Unknown, fields=(quantity;update)>}},
'favorites': {}}
separators
(',', ':')
skipkeys
False
sort_keys
False
Если я добавляю товар в избранное и удаляю товар из корзины, я уже получаю эту ошибку
TypeError at /favorites/
Object of type Product is not JSON serializable
Request Method: GET
Request URL: http://127.0.0.1:8000/favorites/
Django Version: 4.0.4
Exception Type: TypeError
Exception Value:
Object of type Product is not JSON serializable
Exception Location: E:\Python\lib\json\encoder.py, line 179, in default
Python Executable: E:\Дипломная_работа\venv\Scripts\python.exe
Python Version: 3.9.5
Как я могу это исправить?
использовать
return render(request, 'main/cart.html', {'cart': json.dumps(cart,cls=DjangoJsonEncoder), 'form': form})