我正在使用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 %}
我还能尝试什么?
答案 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 %}