如何有效地编写此视图?

时间:2010-07-10 07:45:27

标签: django views

我在Django中有一个简单的视图:

@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)}

我正在尝试动态地在我的模板上构建导航,并且需要'max_seasons'才能执行此操作...是否有更好的方法来获取此信息,因为这似乎会产生额外的数据库查询。

'.series'指的是外键。

1 个答案:

答案 0 :(得分:0)

将其调整为query = Episode.objects.select_related('series').filter(season=season) 会在第一次数据库命中时跟随fk,这意味着你不需要另一个,但是如果查询集query包含多于一个,那么它将提取/预取更多的系列结果而不是您(似乎)需要的单个结果一个结果(为了清楚起见,可能最好将其称为episodes。)。

(但是,即使它确实比你需要的还多,它仍然可能更快)

官方文档为here