haystack的查询结果展示

今天在使用django的haystack进行全局搜索的时候,有个点踩了坑了,所以记录下来。

这是官网的帮助

Getting Started with Haystack — Haystack 2.5.0 documentation

  1. 在前面所有都做完后,自己要写一个显示搜索结果的search.html页码,按照官方的目录放好后,官方给了具体展示方法如下:
{% extends 'base.html' %}

{% block content %}
    <h2>Search</h2>

    <form method="get" action=".">
        <table>
            {{ form.as_table }}
            <tr>
                <td>&nbsp;</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 }}&amp;page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %}
                    |
                    {% if page.has_next %}<a href="?q={{ query }}&amp;page={{ page.next_page_number }}">{% endif %}Next &raquo;{% 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是新增加的。

posted @ 2024-11-10 18:06  saromman  阅读(3)  评论(0编辑  收藏  举报