我在我的网站上使用 django-haystack 作为搜索页面,我想按内容类型对所有结果进行排序。有没有办法我可以做到这一点?为了简单起见,假设我有一个应用程序和几个类。提前致谢
问问题
1877 次
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')
。作为警告,这会抛出相关性。保持相关性和按模型分组的唯一方法是运行多个查询(每个模型一个 - 通常由于查询缓存而具有高性能)或运行查询并对结果进行后处理,并在进行时重新组合它们。
Haystack 保留以下字段名称供内部使用:id、django_ct、django_id 和内容。名称和类型名称过去是保留的,但现在不再保留。
如果需要,您可以使用 HAYSTACK_ID_FIELD、HAYSTACK_DJANGO_CT_FIELD 和 HAYSTACK_DJANGO_ID_FIELD 覆盖这些字段名称。
于 2011-03-24T04:21:03.493 回答