我目前正在使用像IMDB.com这样的Django应用程序,该应用程序具有Media(包含电视节目和电影)模型和Episode模型(它们之间具有一对多关系),以便在TvShow页面上显示这些情节。
我设法通过以下方式在页面内显示电视节目的片段:
def tvshow(request, tvshow_title):
tvshow = get_object_or_404(Media, title=tvshow_title)
episodes = Episode.objects.all().filter(is_published=True, tvshow=tvshow)
context = {
'tvshow': tvshow,
'episodes': episodes
}
return render(request, 'media/tvshow.html', context)
这很好用,但是我还需要根据季节来显示情节,这让我有点困惑,当媒体模型中没有字段时,我如何知道电视节目有多少个季节,但是情节模型有一个season_number字段,所以我试图根据season_number来查询电视节目的最后一集:
latest_episode = Episode.objects.order_by('-season_number').filter(is_published=True, tvshow=tvshow)[:1]
我确实成功地获得了这一集,但是我现在不知道该如何获得其中的季数。
我尝试了
seasons = latest_episode.season_number
和
seasons = latest_episode['season_number']
,他们都不起作用。请告诉我是否有更好的方法,如果这种方法很好,请告诉我如何获取season_number。 :)
答案 0 :(得分:0)
使用[:1]
返回一个QuerySet
,它基本上是一个列表,而不是模型实例(将其视为返回[EPISODE]
而不是返回EPISODE
。)您无权访问剧集的season_number
属性。
尝试一下:
latest_episode = Episode.objects.order_by('-season_number').filter(is_published=True, tvshow=tvshow).first()
然后您应该可以使用latest_episode.season_number