今天在使用django的haystack进行全局搜索的时候,有个点踩了坑了,所以记录下来。
这是官网的帮助
Getting Started with Haystack — Haystack 2.5.0 documentation
- 在前面所有都做完后,自己要写一个显示搜索结果的search.html页码,按照官方的目录放好后,官方给了具体展示方法如下:
{% extends 'base.html' %}
{% block content %}
<h2>Search</h2>
<form method="get" action=".">
<table>
{{ form.as_table }}
<tr>
<td> </td>
<td>
<input type="submit" value="Search">
</td>
</tr>
</table>
{% 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 %}
</form>
{% endblock %}
踩坑记录:
上面的代码中,for 循环的时候,{% for result in page.object_list %} ,这句得到result,之后想要拿到result的字段,比如得到博客的title和id,
****必须使用result.object.title ,result.object.id ,这样才能得到。注意其中的object是新增加的。