在 Django ListView 中禁用结果计数

Jac*_*fer 6 python django

我有一个客户ListView,其查询相当昂贵。当在 a 中使用子查询时COUNT(*),Postgres 查询规划器的性能甚至更差。计数比检索结果慢约 20 倍(46 毫秒 vs 922 毫秒)。

我的问题是有没有办法禁用 的子类的计数查询ListView?在 Django 管理中,有一个选项show_full_result_count允许禁用额外的COUNT(*)分页查询。那么是否有类似的机制呢?

Ala*_*air 1

您可以编写一个不调用的自定义分页器类count(),然后paginator_class在视图上设置以使用它。

class MyListView(ListView):
    paginator_class = MyPaginator
Run Code Online (Sandbox Code Playgroud)

要编写您自己的分页器类,您可以尝试此代码片段或查看此票证上的讨论。