python - python 如何将 Django 对象存储为会话变量( 对象不是JSON序列化)?

  显示原文与译文双语对照的内容
113 2

我有一个简单的实现看法

def foo(request):
 card = Card.objects.latest(datetime)
 request.session['card']=card

对于上面的代码,我得到了

"<Card: Card object> is not JSON serializable"

Django 版本 1.6.2. 我做错了什么?

时间:原作者:0个回答

61 2

在cookie中,我只存储对象的主键:

request.session['card'] = card.id

从会话中加载card时,请使用以下方法再次获取card:

try:
 card = Card.objects.get(id=request.session['card'])
except (KeyError, Card.DoesNotExist):
 card = None

如果会话中没有 card 条目或特定卡不存在,则将 card 设置为 None

原作者:
144 5

有两种简单的方法可以做到这一点。

  • 如果每个对象同时属于单个会话,则将会话标识存储为模型字段,并更新模型。
  • 如果对象可以同时属于多个会话,则将 object.id 存储为会话变量。
原作者:
...