2011-01-21 6 views
0

J'ai un modèle 'catégories' que je suis utilisé plus d'une fois sur une page. Puisque j'obtiens toutes les catégories au début, je veux réduire les requêtes de base de données en obtenant les mêmes données plus d'une fois. Comme la requête initiale obtient TOUTES les catégories, y a-t-il un moyen de stocker ces informations dans le modèle de sorte que lorsque je referai les données plus tard, je n'ai plus besoin de toucher la base de données?Django - Stockage des résultats de la requête

Peut-être une sorte de tableau associatif ou dict qui stocke les catégories?

Toute aide serait appréciée.

Répondre

1

Les jeux de quilles de Django sont lazy et cached, de sorte que la base de données n'est pas atteinte jusqu'à ce que le queryset soit accédé. Vous devriez également jeter un oeil à how queries are evaluated.

Si vous pouviez poster du code, nous pourrions vous aider à trouver un moyen optimal d'écrire des requêtes.

+0

Je suis désolé, je n'ai pas vraiment de code, c'est plutôt une question générale. Si vous imaginez un blog, vous voudrez peut-être avoir les catégories listées sur le côté droit .. mais vous montreriez également des catégories individuelles pour chaque entrée dans le blog sur la gauche. Comme nous avons déjà atteint la base de données en obtenant la liste des catégories pour le côté droit de la page, je ne voudrais pas le faire à nouveau pour les entrées de blog individuelles. – Hanpan

+0

@Hanpan - mais ce sont deux requêtes complètement différentes, vous allez devoir les poser toutes les deux, donc je ne sais pas comment un cache pourrait vous aider. –

+0

Frapper le DB deux fois n'est pas un problème. Frapper pour chaque blog dans une grande liste pourrait être. Vous devrez probablement travailler dur (par 'hard' je veux dire 'stupidement') pour que Django fasse ça. – Spacedman

Questions connexes