我在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'指的是外键。
答案 0 :(得分:0)
将其调整为query = Episode.objects.select_related('series').filter(season=season)
会在第一次数据库命中时跟随fk,这意味着你不需要另一个,但是如果查询集query
包含多于一个,那么它将提取/预取更多的系列结果而不是您(似乎)需要的单个结果一个结果(为了清楚起见,可能最好将其称为episodes
。)。
(但是,即使它确实比你需要的还多,它仍然可能更快)
官方文档为here