4

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

4

2 回答 2

6

不知道你所说的内容类型是什么意思,但如果你在谈论按模型分组,我有这个工作

        {% 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 %}
于 2013-02-21T19:51:17.300 回答
4

来自How to order search results by Model

你可以做到 SearchQuerySet().order_by('django_ct')。作为警告,这会抛出相关性。保持相关性和按模型分组的唯一方法是运行多个查询(每个模型一个 - 通常由于查询缓存而具有高性能)或运行查询并对结果进行后处理,并在进行时重新组合它们。

来自searchindex api

Haystack 保留以下字段名称供内部使用:id、django_ct、django_id 和内容。名称和类型名称过去是保留的,但现在不再保留。

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

于 2011-03-24T04:21:03.493 回答