Skip to main content
 首页 » 编程设计

python之无法在 Django session 中保存对象列表

2025年05月04日35myhome

我正在尝试修改 session 并存储模型对象列表。

这是我的观点-

def update_cart(request): 
    if request.method == 'POST': 
        post = request.POST 
        cart = json.loads(post['cart']) 
        food_list = [] 
        for f in cart['food']: 
            food_list.append(Food.objects.get(food_id = f)) 
        print food_list 
        request.session['food'] = food_list 
        request.session.modified = True 
        request.session['quantity'] = cart['quantity'] 
        request.session['price'] = cart['price'] 
        request.session['amount'] = cart['amount'] 
        print request.session 
        return JsonResponse({'data': 'OK'}) 

它将 food_list 和 session 对象打印为 <django.contrib.sessions.backends.db.SessionStore object at 0x7f49bca6e150>

在此之后我收到内部服务器错误。

我还有SESSION_SAVE_EVERY_REQUEST = True在我的设置中

我还是做不到。

感谢任何帮助。

请您参考如下方法:

session 需要 JSON 可序列化的东西。因此,您必须将以下规则 food_list.append(Food.objects.get(food_id = f)) 调整为附加 ID。

您可以将列表的结构更改为以下行。还将数据库上的多个获取更改为一个过滤器。

food_list = [f.id for f in Food.objects.filter(food_id__in=cart['food'])]