2009-08-12 2 views
0

J'écris une application pour marquer des photos. L'un des points de vue poignées en ajoutant de nouvelles étiquettes et sans boilerplate POST/GET et la gestion des erreurs sur le terrain, il le fait:Django sauvegarde des objets - fonctionne, mais les valeurs des objets semblent être mises en cache jusqu'à ce que je redémarre le serveur

tagName = request.cleaned_attributes['tagName'] 
t = Tag.objects.create(name = tagName) 
t.save() 

Maintenant, en vue d'une autre requête pour récupérer tous les tags Je:

tags = Tag.objects.all() 

Je ne vois les données qu'après le redémarrage du serveur de développement Django, ce qui est étrange pour moi. On dirait que Tag.objects.all() a un mécanisme de mise en cache qui n'est pas invalidé correctement? Les données sont à coup sûr sauvegardées dans la base de données.

Le moteur de base de données est sqlite. Je suppose que je manque soit une configuration ou juste oublié de faire quelque chose de simple. Des idées?

+0

Quel middleware avez-vous installé? –

+0

Aucun middleware supplémentaire. – Marcin

+0

Ceci est une question à propos de quelque chose qui ne pose pas de problème. Le problème que j'avais menti dans quelque chose de totalement différent (il y avait un code supplémentaire qui a créé la plupart du désordre qui empêchait les objets d'être sauvés). Maintenant, cette question peut être trompeuse pour les personnes qui ont vraiment des problèmes avec la création d'objets. Effaçons-le. – Marcin

Répondre

3

Tag.objects.all() est un QuerySet. Ceux-ci ne frappent pas la base de données jusqu'à ce que vous fassiez quelque chose à evaluate eux. Alors, comment l'utilisez-vous exactement à votre avis? Si vous utilisez une vue générique et que vous passez le jeu de requête à extra_context, par exemple, wouldn't be re-evaluated.

En outre, en plus, Tag.objects.create(name = tagName) va automatically save au db.

Questions connexes