我在我的网站上使用django-haystack作为搜索页面,我想按内容类型排序所有结果。有没有办法可以做到这一点? 为了简化,假设我有一个应用程序和几个类。 提前致谢
答案 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')
。 作为警告,这就抛出了 关联。唯一的方法是保持 相关性和按模型分组是 运行许多查询(每个模型一个 - 通常感谢查询 缓存)或运行查询和 后处理结果,重新组合 他们你去的地方。
Haystack保留以下字段 内部使用的名称:id,django_ct, django_id&amp;内容。这个名字和类型 以前的名字是保留但没有 更长的是。
您可以覆盖这些字段名称 使用HAYSTACK_ID_FIELD, HAYSTACK_DJANGO_CT_FIELD&amp; 如果需要,可以使用HAYSTACK_DJANGO_ID_FIELD。