首页 > 解决方案 > 使用请求继承对象时,“十进制”类型的对象不是 JSON 可序列化错误

问题描述

我在 Django 2.0 中创建购物车时遇到了一个奇怪的问题。购物车是从请求继承的对象并存储在会话中:

class Cart(object):
    def __init__(self, request, shop_u_id):
        self.session_key = str(settings.CART_SESSION_ID)
        self.session = request.session
        cart = self.session.get(self.session_key)
        if not cart:
            cart = self.session[self.session_key] = {}
        self.cart = cart

我对set和get方法没有问题,但是总和函数出现了奇怪的问题:

    def get_total_price(self):
        return sum(Decimal(item['price']) * item['quantity'] for item in self.cart.values())

我收到一个错误:

“十进制”类型的对象不是 JSON 可序列化的

但是 get_total_price 在会话中没有存储任何东西,它只是为了表示。(item['price'] 存储为字符串)

在此处输入图像描述

标签: pythondjangosession

解决方案


推荐阅读