Django:在基于类的视图中使用分页随机化查询集

时间:2013-10-30 19:37:45

标签: python django pagination

我目前正在listview中使用内置的Django分页来显示用户的查询集,它可以正常工作。现在,我想将输出随机化,但是如果我在列表中拉出查询集并随机播放对象,那么当我前往不同的页面时,整个用户列表就会被洗牌。

class ExampleListView(ListView):
    paginate_by = 10
    ...
    def get_queryset(self):
        output = list(UserProfile.objects.all())
        random.shuffle(output)
        return output

1 个答案:

答案 0 :(得分:3)

好的,我可以建议您使用自定义paginator_class

覆盖Paginator
class ExampleListView(ListView):
    paginate_by = 10
    paginator_class = ShuffledPaginator
    ...

例如,paginator可以跟随

class ShuffledPaginator(Paginator):
    def page(self, number):
        page = super(ShuffledPaginator, self).page(number)
        random.shuffle(page.object_list)
        return page