使用django-haystack,如何按内容类型订购结果

时间:2011-03-24 04:05:40

标签: django django-haystack

我在我的网站上使用django-haystack作为搜索页面,我想按内容类型排序所有结果。有没有办法可以做到这一点? 为了简化,假设我有一个应用程序和几个类。 提前致谢

2 个答案:

答案 0 :(得分:5)

不确定您的内容类型是什么意思,但如果您正在讨论按模型分组,我有这个工作

        {% with page.object_list as results %}
            {% regroup results|dictsort:"verbose_name_plural" by verbose_name_plural as grouped_objects %}
            {% for ct in grouped_objects %}
                {{ ct.grouper }}
                {% for result in ct.list %}
                    <p>
                        <a href="{{ result.object.get_absolute_url }}">{{ result.object }}</a>
                    </p>
                {% endfor %}
            {% empty %}
                <p>No results found.</p>
            {% endfor %}
        {% endwith %}

答案 1 :(得分:4)

来自How to order search results by Model

  

你可以做到   SearchQuerySet().order_by('django_ct')。   作为警告,这就抛出了   关联。唯一的方法是保持   相关性和按模型分组是   运行许多查询(每个模型一个 -   通常感谢查询   缓存)或运行查询和   后处理结果,重新组合   他们你去的地方。

来自searchindex api

  

Haystack保留以下字段   内部使用的名称:id,django_ct,   django_id&amp;内容。这个名字和类型   以前的名字是保留但没有   更长的是。

     

您可以覆盖这些字段名称   使用HAYSTACK_ID_FIELD,   HAYSTACK_DJANGO_CT_FIELD&amp;   如果需要,可以使用HAYSTACK_DJANGO_ID_FIELD。