Django: Как я могу реверсировать объекты с помощью DetailView?

Я использовал общие представления. Каждый эпизод связан с определенным сезоном через ForeignKey. В views.py у меня есть это:

class SeasonList(generic.ListView):
    template_name = 'episodes/episodes.html'
    context_object_name = 'all_seasons'

    def get_queryset(self):
        return reversed(Season.objects.all())

# Here I need to sort the episodes     
class SeasonDetails(generic.DetailView):
    model = Season
    template_name = 'episodes/season_details.html'   

В представлении списка я использовал reverse(), чтобы сначала показать последний сезон. Точно так же в подробном представлении я хочу, чтобы эпизоды отображались в порядке убывания, потому что последний эпизод должен отображаться вверху страницы.

В моем html я получил доступ к списку эпизодов, используя Season.episode_set.all

    {% for episode in season.episode_set.all %}

       <!-- the tags to show the list -->

    {% endfor %}

Есть ли способ, как я могу изменить список эпизодов?


person Ramisa Anjum Aditi    schedule 22.06.2018    source источник


Ответы (2)


Вы можете заказать по id и использовать потомок - или восходящий в зависимости от ваших потребностей


Season.objects.all().order("id") # Ascendant

Season.objects.all().order("-id") # Decendant

Или reverse() будет в порядке, чтобы отменить набор запросов независимо от вашего фильтра.

Season.objects.all().reverse()
person Lemayzeur    schedule 22.06.2018
comment
Но это перевернет объекты времен года. Я уже сделал это. Вообще-то я ищу способ, который бы перевернул эпизоды. Я использовал внешний ключ, чтобы связать эпизоды с определенным сезоном. Извините, если я не смог правильно описать свою проблему. - person Ramisa Anjum Aditi; 23.06.2018

Чтобы отсортировать эпизоды, вы можете использовать что-то вроде этого:

def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['episodes'] = Episodes.objects.all().order_by('-date_posted')
    return context
person Avdhoot Hapse    schedule 12.04.2021