在模板中使用django-haystack统计搜索对象总数

10 投票
3 回答
8142 浏览
提问于 2025-04-17 07:00

我正在使用 Django Haystack,并且选择了 Xapian 作为后端搜索引擎。我在搜索时使用了 FacetedSearchViewFacetedSearchForm 来进行分类搜索。我已经在我的 urls.py 文件中把 searchqueryset 传递给了 FacetSearchView

但是问题是,我在模板中无法访问这个 searchqueryset。我想做的就是统计在 searchqueryset 中找到的对象数量。

在命令行中,我可以通过 SearchQuerySet().filter(content="foo").count() 来实现这个功能,那我在模板中该怎么做呢?请给我一些指导。我想要得到与搜索匹配的对象总数。

3 个回答

0

在编程中,有时候我们需要把一些数据放到一个地方,然后再从这个地方取出来。这个过程就像把东西放进一个盒子里,等需要的时候再拿出来。

在这里,提到的“盒子”就是一个数据结构,通常我们会用数组或者对象来实现。数组就像一排排的盒子,每个盒子里可以放一个数据,而对象则像一个有标签的盒子,可以存放不同类型的数据。

当我们想要从这些“盒子”里取出数据时,我们需要知道每个盒子的地址,或者说是它的位置。这样才能准确地找到我们需要的东西。

总之,理解这些数据结构就像理解如何使用不同的盒子来存放和取出东西一样简单。

{{ page.object_list | length }}
6

如果你想显示结果的范围,而不是页码,比如"结果 21-40,共 1001 条",你可以这样做:

Results {{ page.start_index }} - {{ page.end_index }} of {{ page.paginator.count }}
33

Haystack使用的是标准的Django分页功能:https://docs.djangoproject.com/en/dev/topics/pagination/

在第 {{ page.number }} 页中,显示了 {{ page.object_list|length }} 条结果,总共有 {{ page.paginator.count }} 条结果,分页总共 {{ page.paginator.num_pages }} 页。

撰写回答