我如何避免重复无休止的分页和 order_by('?') 查询集的对象

How can i avoid repeating objects with endless pagination and order_by('?') queryset

我正在使用 django-endless-pagination 及其 Twitter 风格的分页。现在我想对打乱的查询集进行分页。我尝试添加

return Fact.objects.all().order_by('?')

但是对象可以出现超过 1 次。
我怎样才能改变这种行为?

您可以尝试的另一种方法是我在另一个 Whosebug post here 上使用和发现的方法。

import random
items = sorted(Fact.objects.all().order_by('nr'), key=lamda x: random.random())
return items

我认为在这种情况下使用分页会产生误导。当用户点击第 2 页时,它实际上并不是第二页,它只是另外 20 个项目。
更好的选择是使用一个按钮(例如称为“获取”)并在用户每次单击它时获取 20 个项目(或任何页面大小)。

为避免同一项目出现两次,您可以在会话中保留一个已查看 ID 的列表,并将它们从后续查询中排除。