我有一个简单的看法
def foo(request):
card = Card.objects.latest(datetime)
request.session['card']=card
对于上面的代码,我得到了错误
"<Card: Card object> is not JSON serializable"
Django 版本 1.6.2。我究竟做错了什么 ?
最佳答案
在 session 中,我只存储对象主键:
request.session['card'] = card.id
当从 session 中加载卡片时,再次获取卡片:
try:
card = Card.objects.get(id=request.session['card'])
except (KeyError, Card.DoesNotExist):
card = None
如果 session 中没有 card
条目或特定卡片不存在,这会将 card
设置为 None
。
默认情况下, session 数据为 serialised to JSON .你也可以provide your own serializer ,它知道如何存储 card.id
值或一些其他表示,并在反序列化时再次生成您的 Card
实例。
关于python - 如何将 Django 对象存储为 session 变量(对象不是 JSON 可序列化的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294788/