検索結果の数を表示していますが、複数の検索を行っています。したがって、結果の数を表示するには、それらを合計する必要があります。だから私はこれを試しました:
<p>Found {{ products|length + categories|length + companies|length }} results.</p>
しかし、エラーが発生します。どうすればこれを行うことができますか?
Django テンプレートは算術演算子をサポートしていません。ただし、追加フィルターを使用できます。次のようなものが必要だと思います:
<p>Found {{ products|length|add:categories|length|add:companies|length }} results.</p>
または、ビューで合計を計算し、事前に計算してテンプレートに渡す必要があります。
編集:コメントに加えて、このバージョンは機能するはずです:
{% with categories|length as catlen %}
{% with companies|length as complen %}
<p>Found {{ products|length|add:catlen|add:complen }} results.</p>
{% endwith %}
{% endwith %}
ただし、これは非常にハックに感じられるため、ビュー内の数値を計算することをお勧めします。
ヴァンゲイルの答えは最適ではないことを指摘したいと思います。QuerySet APIドキュメントから、 len (query)ではなくquery.count()を使用する必要があります
count()呼び出しはバックグラウンドでSELECT COUNT(*)を実行するため、すべてのレコードをPythonオブジェクトにロードして結果に対してlen()を呼び出すのではなく、常にcount()を使用する必要があります(オブジェクトをロードする必要がある場合を除く)とにかくメモリに入れます。その場合、len()の方が高速になります)。
したがって、答えは次のようになります。ビュー内:
'result_count': products.count() + categories.count() + companies.count()
テンプレートは変更されません
コンテキスト ディクショナリを作成するときに、ビューでこれを行います。
'result_count': len(products) + len(categories) + len(companies)
次に、テンプレートで次を使用します。
<p>Found {{ result_count }} results.</p>