3

検索結果の数を表示していますが、複数の検索を行っています。したがって、結果の数を表示するには、それらを合計する必要があります。だから私はこれを試しました:

<p>Found {{ products|length + categories|length + companies|length }} results.</p>

しかし、エラーが発生します。どうすればこれを行うことができますか?

4

3 に答える 3

6

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

ただし、これは非常にハックに感じられるため、ビュー内の数値を計算することをお勧めします。

于 2009-06-05T09:41:19.700 に答える
3

ヴァンゲイルの答えは最適ではないことを指摘したいと思います。QuerySet APIドキュメントから、 len (query)ではなくquery.count()を使用する必要があります

count()呼び出しはバックグラウンドでSELECT COUNT(*)を実行するため、すべてのレコードをPythonオブジェクトにロードして結果に対してlen()を呼び出すのではなく、常にcount()を使用する必要があります(オブジェクトをロードする必要がある場合を除く)とにかくメモリに入れます。その場合、len()の方が高速になります)。

したがって、答えは次のようになります。ビュー内:

'result_count': products.count() + categories.count() + companies.count()

テンプレートは変更されません

于 2012-06-20T16:15:48.460 に答える
3

コンテキスト ディクショナリを作成するときに、ビューでこれを行います。

'result_count': len(products) + len(categories) + len(companies)

次に、テンプレートで次を使用します。

<p>Found {{ result_count }} results.</p>
于 2009-06-05T09:42:39.497 に答える