我一直关注Haystack网站上有关如何添加搜索功能的文档,但我无法显示任何结果。我已经在shell中运行了这一切,并且所有内容都会检出(计数为433,文字不仅仅是'')。
sqs = SearchQuerySet().all()
sqs.count()
sqs[0].text
此时使用this guide作为参考,我得出的结论是我的搜索模板是问题所在,但我只是使用Haystack官方教程中的默认模板,所以我不知道自己搞砸了什么(也就是为什么page.object_list为空)。这是相关模板的相关部分:
{% if query %}
<h3>Results</h3>
{% for result in page.object_list %}
<p>
<a href="{{ result.object.get_absolute_url }}">{{ result.object.title }}</a>
</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
{% if page.has_previous or page.has_next %}
<div>
{% if page.has_previous %}<a href="?q={{ query }}&page={{ page.previous_page_number }}">{% endif %}« Previous{% if page.has_previous %}</a>{% endif %}
|
{% if page.has_next %}<a href="?q={{ query }}&page={{ page.next_page_number }}">{% endif %}Next »{% if page.has_next %}</a>{% endif %}
</div>
{% endif %}
{% else %}
{# Show some example queries to run, maybe query syntax, something else? #}
{% endif %}
为了更好地衡量,请点击我的search_indexes.py,
from haystack import indexes
from uchicagohvz.game.models import Kill
class KillIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True)
killer = indexes.CharField(model_attr='killer')
victim = indexes.CharField(model_attr='victim')
def get_model(self):
return Kill
def index_queryset(self, using=None):
#Used when the entire index for model is updated
return self.get_model().objects
这里是我的kill_text.txt(位于templates / search / indexes /),
{{ object.killer }}
{{ object.victim }}
这里是我的search_sites.py(这是否需要?它不在设置教程中,但我在其他地方看到了它,同时试图找出出错的地方。)
import haystack
haystack.autodiscover()
这是我的settings.py
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
},
}