【问题标题】:How can i avoid repeating objects with endless pagination and order_by('?') queryset我如何避免使用无休止的分页和 order_by('?') 查询集重复对象
【发布时间】:2015-04-19 15:54:44
【问题描述】:

我正在使用 django-endless-pagination 及其 twitter 风格的分页。现在我想对洗牌的查询集进行分页。我已经尝试添加

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

但是对象可以出现超过 1 次。
我该如何改变这种行为?

【问题讨论】:

    标签: django pagination django-views django-endless-pagination


    【解决方案1】:

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

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

    【讨论】:

    • 我使用 twitter 风格的分页,它是 1 页无休止的分页,我用 ajax 下载新帖子,某种获取按钮。
    • 哦,我明白了,抱歉没听清楚。
    【解决方案2】:

    您可以尝试的另一种方法是我使用的方法,我在另一个 StackOverflow 帖子 here 上找到了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2023-03-27
      • 2015-07-30
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多