В настоящее время я работаю над приложением django, таким как IMDB.com, в котором есть модель 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)
и это работало отлично, но мне также нужно было отображать эпизоды в зависимости от сезона, и это меня немного смутило, как я узнаю, сколько сезонов имеет телешоу, когда в модели Media нет поля для него, но модель эпизода имела поле 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']
и ни один из них не работал. пожалуйста, скажите мне, есть ли лучший способ сделать это, и если этот способ хорош, дайте мне знать, как получить сезонный номер. :)
Вместо [:1] используйте .first().
также вам не нужно .all() в Episode.objects.all().filter(is_published=True, tvshow=tvshow) (это избыточно из-за .filter()





Использование [: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
также вы думаете, что был лучший способ сделать это? Мне было бы интересно узнать!
можешь распечатать
latest_episodeи поделиться результатом?