Django-Haystack returns 搜索表单中没有结果

Django-Haystack returns no results in search form

我正在使用带有 Whoosh 后端的 Django-Haystack。当我进行查询时,我没有得到任何结果。我通过在 Django shell 中键入以下内容来尝试 Haystack 文档中建议的调试步骤,我可以看到我想要的所有文本都已编入索引。

from haystack.query import SearchQuerySet
sqs = SearchQuerySet().all()
sqs.count()
sqs[0].text

我的 search.html 页面有以下部分(直接从文档中复制):

{% for result in page.object_list %}
    <p>
        <a href="{{ result.object.url }}">{{ result.object }}</a>
    </p>
{% empty %}
    <p>No results found.</p>
{% endfor %}

我还能尝试什么?

好吧,我不知道发生了什么,但是在示例中 page.object_list 有效,而在我的实际项目中我需要删除 page 前缀。很难弄明白。

现在可以了:

{% for result in object_list %}
  <p>
    <a href="{{ result.object.url }}">{{ result.object }}</a>
  </p>
{% empty %}
  <p>No results found.</p>
{% endfor %}

作为尝试 django-haystack 和 whoosh 的新手,并遵循 haystack 文档上各种教程的片段,我遇到了与您相同的问题: 当我执行 EmptySearch() 时没有显示任何结果,即使我已覆盖 SearchForm 以显示所有结果。

def no_query_found(self):
    return self.searchqueryset.all()

如您所说,删除 search.html 模板上的 "page" 前缀可以解决问题,是一个很好的临时解决方案。但是,当需要对结果进行分页时,这就成了一个问题。所以在环顾四周之后,解决方案是使用 "page_obj" 前缀而不是 "page" 并且一切都按预期工作。似乎问题在于 haystack-tutorial 假设页面对象被称为 "page",而某些版本的 django 被称为 "page_obj"?我确信有更好的答案 - 我只是报告我的有限发现。