2012-05-10 1 views
12
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 

Хорошая практика хранения объектов в сеансе вместо их идентификатора?
Будет ли это «picklable» достаточно для использования в шаблонах, например?Django - Сохранение объектов в сеансе

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

лучше хранить идентификатор в сеансе. вы хотите сохранить все данные сеанса как можно более легкими. – cobie

+0

Вот что я думал. Поэтому ответ должен быть «нет, это не очень хорошая практика», не так ли? –

ответ

21

Это кажется плохой идеей. Помимо всего прочего, если вы храните объект в сеансе, он не изменится, если/когда версия базы данных будет выполнена.

4

есть исключение:

if your object doesnt exist in db yet 

, например, если вы строите его (объект) через множество шагов/просмотров.