Django:如何使用DetailView反转对象?

时间:2018-06-22 20:34:47

标签: django python-3.x sqlite django-generic-views

我使用了通用视图。每个插曲都通过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'   

在列表视图中,我使用reversed()首先显示了最新季节。同样,在详细视图中,我希望这些情节以降序显示,因为最新的情节应该出现在页面顶部。

在我的html中,我已经使用season.episode_set.all

访问了剧集列表
    {% for episode in season.episode_set.all %}

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

    {% endfor %}

有什么办法可以使剧集列表反转吗?

2 个答案:

答案 0 :(得分:1)

您可以根据需要id进行订购,并根据需要使用后裔-或后裔


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

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

也可以使用reverse()来逆向查询集,无论使用哪种过滤器。

Season.objects.all().reverse()

答案 1 :(得分:0)

要对剧集进行排序,您可以使用这样的东西 -

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