サイトの検索ページに django-haystack を使用しています。すべての結果をコンテンツ タイプ別に並べ替えたいと考えています。それを行う方法はありますか?簡単にするために、1 つのアプリケーションと複数のクラスがあるとします。前もって感謝します
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')
。警告として、これにより関連性が失われます。関連性を維持し、モデルごとにグループ化する唯一の方法は、多くのクエリを実行する (モデルごとに 1 つ - 通常はクエリ キャッシュのおかげでパフォーマンスが高い) か、クエリを実行して結果を後処理し、必要に応じて再グループ化することです。
Haystack は、内部使用のために次のフィールド名を予約しています: id、django_ct、django_id & content。名前と型の名前は以前は予約されていましたが、現在は予約されていません。
必要に応じて、HAYSTACK_ID_FIELD、HAYSTACK_DJANGO_CT_FIELD、および HAYSTACK_DJANGO_ID_FIELD を使用して、これらのフィールド名をオーバーライドできます。
于 2011-03-24T04:21:03.493 に答える