gpt4 book ai didi

python - Django:count() 的替代品

转载 作者:行者123 更新时间:2023-11-29 03:20:35 27 4
gpt4 key购买 nike

我有一个显示分页搜索结果的 Django 应用程序。每页显示 20 个结果,我在底部有一个分页栏,显示小于当前页面的 5 页和大于当前页面的 5 页(如 Google)。问题是,对于分页栏,我调用 count() 来获取结果总数,因此我知道在当前页面之前是否实际上有 5 页结果。

问题是更一般的查询可能需要大约 10 秒来执行 count()。我实际上并不关心确切的数字,因为我的大多数用户可能永远不会到达结果的末尾。有什么方法可以估计 count 的输出,或者更一般地说,估计查询返回结果的数量?

这是我目前要获得实际结果的查询。

results = Item.objects.filter(title__icontains=query).order_by('views')[offset:limit]

offsetlimit 变量指的是当前页面上显示的结果段。我能看到解决问题的唯一方法是提前获取 ~5 页的结果段并检查它是否为空。但是,该解决方案有很多边缘情况,如果有更简单的解决方案,我真的不想花一天时间编写代码。

最佳答案

也不是理想的解决方案,但可能值得针对您的特定情况进行测试。您可以在以下帮助下为进行查询的函数引入超时:

http://code.activestate.com/recipes/576780/

...或类似的解决方案。您要么需要确切的行数,要么需要有很多行的信息。这需要一些基准测试才能正确超时,并且仍然容易受到某些外部因素的影响,但在 99.9% 的情况下也能正常工作。

它还减少了数据库上的长查询负载。

关于python - Django:count() 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45863993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com