Django - Как получить поле изображения из элементов запроса ForeignKey?
У меня есть следующий код в views.py для сортировки TvShows по последнему выпущенному эпизоду (release_date) в течение 90 дней:
def tv_show_by_set_just_released(request):
latest_episodes = TvShows.objects.filter(episode_show_relation__release_date__gte=now() - datetime.timedelta(days=90))
...
Для каждого найденного элемента я теперь также хочу отобразить обложку. Но обложка находится в другой таблице, и я не знаю, как ее вытащить в контексте этого запроса. В итоге я хочу отобразить самую первую обложку TvShowSeasons.cover для каждого элемента моего запроса сверху. Можно ли как-то соединить эти два элемента, latest_episodes и TvShowSeasons.cover, чтобы правильно отобразить их в шаблоне?
Смотрите также models.py
class TvShows(models.Model):
objects = RandomManager()
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
title = models.TextField(verbose_name=_("Title"), blank=False, null=True, editable=False, max_length=255)
genre_relation = models.ManyToManyField(through='GenreTvShow', to='Genre')
date_added = models.DateTimeField(auto_now_add=True, blank=True, verbose_name=_("Date Added"))
class TvShowSeasons(models.Model):
objects = RandomManager()
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
show = models.ForeignKey(TvShows, on_delete=models.CASCADE, related_name='season_show_relation')
season_number = models.IntegerField(verbose_name=_("Season Number"), blank=True, null=True, editable=False)
cover = models.ImageField(verbose_name=_("Cover"), blank=True, null=True, upload_to=get_file_path_images)
cover_tn = models.ImageField(verbose_name=_("Cover Thumbnail"), blank=True, null=True, upload_to=get_file_path_images)
total_tracks = models.IntegerField(verbose_name=_("Total Tracks #"), blank=True, null=True)
rating = models.CharField(verbose_name=_("Rating"), blank=True, null=True, editable=False, max_length=255)
copyright = models.TextField(verbose_name=_("Copyright"), blank=True, null=True, editable=False, max_length=255)
date_added = models.DateTimeField(auto_now_add=True, blank=True, verbose_name=_("Date Added"))
Заранее спасибо
Для этого предназначен аргумент related_name
в ForeignKey
. Предполагая, что вы возвращаете latest_episodes
в качестве контекста, вот как вы можете получить доступ к обложке для каждого эпизода в шаблонах:
{% for episode in latest_episodes %}
<p>Episode name: {{ episode.title }}</p>
<img src="{{ episode.season_show_relation.first.cover.url }}">
{% endfor %}