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"?我确信有更好的答案 - 我只是报告我的有限发现。
我正在使用带有 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"?我确信有更好的答案 - 我只是报告我的有限发现。