【问题标题】:Cannot save list of objects in django sessions无法在 Django 会话中保存对象列表
【发布时间】:2016-03-04 09:58:06
【问题描述】:

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

这是我的看法-

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 和会话对象打印为<django.contrib.sessions.backends.db.SessionStore object at 0x7f49bca6e150>

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

我的设置中也有SESSION_SAVE_EVERY_REQUEST = True

我还是做不到。

感谢任何帮助。

【问题讨论】:

  • 请显示您遇到的错误。如果它是一个 ajax 请求,您应该能够使用浏览器的开发工具看到它,只要您的设置中有 DEBUG = True

标签: python django session


【解决方案1】:

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'])]

【讨论】:

    猜你喜欢
    • 2013-04-10
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多