【发布时间】:2015-04-19 15:54:44
【问题描述】:
我正在使用 django-endless-pagination 及其 twitter 风格的分页。现在我想对洗牌的查询集进行分页。我已经尝试添加
return Fact.objects.all().order_by('?')
但是对象可以出现超过 1 次。
我该如何改变这种行为?
【问题讨论】:
标签: django pagination django-views django-endless-pagination
我正在使用 django-endless-pagination 及其 twitter 风格的分页。现在我想对洗牌的查询集进行分页。我已经尝试添加
return Fact.objects.all().order_by('?')
但是对象可以出现超过 1 次。
我该如何改变这种行为?
【问题讨论】:
标签: django pagination django-views django-endless-pagination
我认为在这种情况下使用分页会产生误导。当用户点击第 2 页时,它实际上并不是第二页,它只是另外 20 个项目。
一个更好的选择是使用一个按钮(例如称为 Fetch)并在用户每次点击它时获取 20 个项目(或任何页面大小)。
为避免同一项目出现两次,您可以在会话中保留已查看 id 的列表,并将它们从后续查询中排除。
【讨论】:
您可以尝试的另一种方法是我使用的方法,我在另一个 StackOverflow 帖子 here 上找到了。
import random
items = sorted(Fact.objects.all().order_by('nr'), key=lamda x: random.random())
return items
【讨论】: