2010-07-10 4 views
0

J'ai vue simple Django:Comment puis-je écrire cette vue efficacement?

@render_to('episode_list.html') 
def list_episodes(request, season): 
    query = Episode.objects.filter(season=season) 
    seasons = query[0].series.total_seasons  
    return {'episodes': query, 
      'season': season, 
      'max_seasons':range(1,seasons + 1)} 

Je suis en train de construire la navigation sur mon modèle dynamique et besoin « max_seasons » de le faire ... Y at-il une meilleure façon d'obtenir ces informations, car il semble que cela ferait une requête de base de données supplémentaire.

La '.series' fait référence à une clé étrangère.

Répondre

0

bidouiller être query = Episode.objects.select_related('series').filter(season=season) suivrait les fk dans le premier coup de DB, ce qui signifie que vous ne besoin d'une autre, mais il va tirer/prélecture plus de résultats de la série que l'unique vous (semblez) besoin si le jeu de requête query contient plus d'un résultat (peut-être préférable de l'appeler episodes pour plus de clarté?).

(Mais, même si elle ne tire plus que vous avez besoin, il est susceptible d'être encore plus rapide)

docs officiels sont here

+0

Très cool, merci beaucoup. – tkorg