如何在同一页面中对多个查询集进行分页和排序?

时间:2020-04-23 09:44:57

标签: django django-views django-pagination

我在一个页面中使用两个查询集,并且我希望每个页面都有不同的分页

这是我基于类的视图:

class MainListView(ListView):
    queryset = Post.objects.all()
    template_name = 'main.html'
    context_object_name = 'posts'

    def get_context_data(self, **kwargs):
        context = super(MainListView, self).get_context_data(**kwargs)
        context['news'] = EventsPost.objects.all()
        context['posts'] = self.queryset
        return context

我希望Post模型由3分页,EventsPost由6分页 感谢您的回复

1 个答案:

答案 0 :(得分:1)

由于不需要分页,因此我将使用TemplateView,并在get_context_data方法中将两个查询集添加到上下文中。

class MainListView(TemplateView):

    def get_context_data(self, **kwargs):
        context = super(MainListView, self).get_context_data(**kwargs)
        context['news'] = EventsPost.objects.order_by('-pk')[:6]
        context['posts'] = Post.objects.order_by('-pk')[:3]
        return context

如果要在其他字段上排序,则可以将其更改为其他内容,例如order_by('-date')