Django - 在会话中存储对象是一个好习惯吗?

时间:2012-05-10 10:07:52

标签: python django django-templates pickle

class Book(models.Model):
  author = models.ForeignKey(User)
  name = models.CharField(max_length=100)

def view(request):
  book = Book.objects.get(pk=1)
  request.session['selected_book'] = book

在会话中存储对象而不是他们的ID是一个好习惯吗?
例如,它是否可以“挑选”到模板中使用?

<div>{{ request.session.book.author.name }}</div>

2 个答案:

答案 0 :(得分:23)

这似乎是一个坏主意。除了其他任何东西,如果你在会话中存储一个对象,它将不会改变,如果/当数据库版本的时候。

答案 1 :(得分:4)

有例外:

if your object doesnt exist in db yet

例如,如果您通过许多步骤/视图构建它(对象)。