2012-05-10 5 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 

Est-ce une bonne pratique de stocker des objets dans une session au lieu de leur identifiant?
Sera-t-il suffisamment "picklable" pour être utilisé dans les templates par exemple?Django - Stockage d'objets dans la session

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

mieux pour stocker un ID dans la session. vous voulez garder toutes les données de session aussi légères que possible. – cobie

+0

C'est ce que je pensais. Donc la réponse devrait être "non ce n'est pas une bonne pratique", n'est-ce pas? –

Répondre

21

Cela semble être une mauvaise idée. En dehors de toute autre chose, si vous stockez un objet dans la session, il ne changera pas si/quand la version de la base de données le fait.

4

il y a exception:

if your object doesnt exist in db yet 

par exemple si vous construisez (objet) à travers de nombreuses étapes/vues.