在Django中将模型对象添加到cookie

时间:2017-04-27 11:11:25

标签: django object cookies

我有一个模特

class Journals(models.Model):
    JOURNAL_ID = models.AutoField(primary_key=True)
    Journal_name = models.CharField(max_length=255)
    Journal_slug = models.SlugField(max_length=255)

我想添加到cookie然后在其他视图中检索。我这样做如下

journal = request.COOKIES.get('journal')

if journal:
    from_cookie = True
else:
    journal = get_object_or_404(Journals, Journal_slug=journal_slug)
    from_cookie = False

template = [...]

template_context = {
    ...
    'journal': journal,
    'from_cookie': from_cookie,
    ...
}

response = render(request, template, template_context)
response.set_cookie('journal', value=journal)
return response

然而,似乎只有Journal_name被添加到cookie而不是完整对象。这样我最终无法访问任何其他字段。如何才能添加和检索完整的日记对象?

1 个答案:

答案 0 :(得分:1)

首先,不要直接使用cookies。将内容存储在会话中。

其次,不要试图存储模型对象。存储ID,并在需要时通过该ID检索对象:

request.session['journal_id'] = journal.pk

...

journal = Journal.objects.get(pk=request.session['journal_id'])