使用 django-haystack,如何按内容类型对结果进行排序

发布于 2024-10-25 06:38:14 字数 97 浏览 0 评论 0原文

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

I'm using django-haystack for a search page on my site, and I want to order all the results by their content type. Is there a way I can do that?
To make it simpler, suppose I have a single application and several classes.
Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三岁铭 2024-11-01 06:38:14

不确定您所说的内容类型是什么意思,但如果您正在谈论按模型分组,我可以使用此功能

        {% 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 %}

Not sure what you mean by content type, but if you are talking about group by models, I have this working

        {% 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 %}
她比我温柔 2024-11-01 06:38:14

来自如何按型号​​对搜索结果进行排序< /代码>

你可以做
SearchQuerySet().order_by('django_ct')
作为警告,这会抛出
关联。唯一的办法就是保留
相关性和按模型分组是
运行许多查询(每个模型一个 -
由于查询通常表现良好
缓存)或运行查询并
对结果进行后处理,重新组合
随你走。

来自 searchindex api

Haystack 保留以下字段
内部使用的名称:id、django_ct、
django_id &内容。名称&类型
名称曾经被保留,但没有
更长。

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

from How to order search results by Model:

You can do
SearchQuerySet().order_by('django_ct').
As a warning, this throws out
relevancy. The only way to keep
relevancy & group by model is either
to run many queries (one per model -
usually performant thanks to query
caching) or to run the query and
post-process the results, regrouping
them as you go.

from searchindex api:

Haystack reserves the following field
names for internal use: id, django_ct,
django_id & content. The name & type
names used to be reserved but no
longer are.

You can override these field names
using the HAYSTACK_ID_FIELD,
HAYSTACK_DJANGO_CT_FIELD &
HAYSTACK_DJANGO_ID_FIELD if needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文