使用Django通用列表视图时,相同的查询集用于生成paginator.count
和object_list
。这非常有道理,因为任何过滤都需要反映在计数和显示的对象列表中。但是,当在查询集上添加过滤器中未使用的注释时,计数查询不必要地包含了这种额外的复杂性。
我注意到有些情况下PostgreSQL计划器很聪明,无法执行这些批注,但是当计数查询可以大大简化时,我也看到查询需要相同的工作。
我想知道是否有人遇到过这种情况并找到了解决方法。
我有以下想法:
覆盖通用列表视图和分页器,以在CBV上使用count_queryset
覆盖通用列表视图和分页器,以在计算计数之前从提供的查询集中删除所有注释
我正在使用Django 1.11.4和PostgreSQL 11.2。