Django как сортировать объекты по отношению foregein key?

В моем Django приложении я хочу отображать некоторые записи ТВ-шоу. В настоящее время я хочу создать фильтр для ТВ-шоу, отсортированный по последним вышедшим эпизодам. Но я не уверен, как должен выглядеть запрос. Вот как я извлекаю эпизоды за последние 90 дней

def tv_show_by_set_just_released(request):
    latest_episodes = TvShowEpisodes.objects.filter(
        release_date__lte=datetime.datetime.today(),
        release_date__gt=datetime.datetime.today()-datetime.timedelta(days=90)).order_by('-release_date')

Но как мне теперь ссылаться на фактическое ТВ-шоу эпизода? Я хочу сортировать ТВ-шоу по последнему добавленному эпизоду (дата_выпуска). пожалуйста, взгляните на мое моделирование:

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 TvShowEpisodes(models.Model):
    objects = RandomManager()
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    duration = models.FloatField(verbose_name=_("Duration"), blank=True, null=True, editable=False, max_length=255)
    title = models.TextField(verbose_name=_("Title"), blank=False, null=True, editable=False, max_length=255)
    release_date = models.DateField(verbose_name=_("Release Date"), blank=True, null=True, editable=False)
    track = models.IntegerField(verbose_name=_("Track #"), blank=True, null=True)
    show = models.ForeignKey(TvShows, on_delete=models.CASCADE, related_name='episode_show_relation')
    season = models.ForeignKey(TvShowSeasons, on_delete=models.CASCADE, related_name='episode_season_relation')
    episode_id = models.CharField(verbose_name=_("Episode ID"), max_length=255, blank=True, null=True, editable=False)
    episode_sort = models.IntegerField(verbose_name=_("Episode Number"), blank=True, null=True, editable=False)
    synopsis = models.TextField(verbose_name=_("Synopsis"), blank=True, null=True, editable=False, max_length=255)
    date_added = models.DateTimeField(auto_now_add=True, blank=True, verbose_name=_("Date Added"))

Вы можете получить TvShows с помощью:

from django.db.models import Max

TvShows.objects.alias(
    latest_episode_release=Max('episode_show_relation__release_date')
).order_by('-latest_episode_release')

или до :

from django.db.models import Max

TvShows.objects.annotate(
    latest_episode_release=Max('episode_show_relation__release_date')
).order_by('-latest_episode_release')
Вернуться на верх