4

サイトの検索ページに django-haystack を使用しています。すべての結果をコンテンツ タイプ別に並べ替えたいと考えています。それを行う方法はありますか?簡単にするために、1 つのアプリケーションと複数のクラスがあるとします。前もって感謝します

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')。警告として、これにより関連性が失われます。関連性を維持し、モデルごとにグループ化する唯一の方法は、多くのクエリを実行する (モデルごとに 1 つ - 通常はクエリ キャッシュのおかげでパフォーマンスが高い) か、クエリを実行して結果を後処理し、必要に応じて再グループ化することです。

からsearchindex api:

Haystack は、内部使用のために次のフィールド名を予約しています: id、django_ct、django_id & content。名前と型の名前は以前は予約されていましたが、現在は予約されていません。

必要に応じて、HAYSTACK_ID_FIELD、HAYSTACK_DJANGO_CT_FIELD、および HAYSTACK_DJANGO_ID_FIELD を使用して、これらのフィールド名をオーバーライドできます。

于 2011-03-24T04:21:03.493 に答える