Django-Haystack在搜索表单中没有返回任何结果

时间:2016-04-16 06:05:37

标签: django django-haystack whoosh

我正在使用Django-Haystack和Whoosh后端。当我进行查询时,我得不到任何结果。我通过在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 %}

我还能尝试什么?

2 个答案:

答案 0 :(得分:3)

作为一个尝试django-haystack和嗖嗖的noobie,以及关于haystack文档的各种教程的片段,我遇到了和你一样的问题: 当我执行EmptySearch()时,没有显示任何结果,即使我已经覆盖了SearchForm以显示所有结果。

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

正如您所说,删除search.html模板上的“page”前缀可以解决问题,这是一个很好的临时解决方案。但是,在分析结果的时候,它成了一个问题。所以在环顾四周后,解决方案是使用“page_obj”前缀而不是“page”,一切都按预期工作。看来问题是干草堆教程假设页面对象被称为“页面”,而某些版本的django称为“page_obj”?我确信有更好的答案 - 我只是报告我的有限发现。

答案 1 :(得分:1)

好吧,我不知道发生了什么,但是在示例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 %}