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