2011-06-27 6 views

答えて

41

あなたはテンプレートフィルタlengthを使用することができます。

{{ articles|length }} 

は、記事リストの長さを表示します。

+0

'count'はクエリセット全体を評価する必要はないので、代わりに' count(*) 'で別のSQLリクエストを使用するので、より効率的になります。 –

+3

@Guillaume、実際には 'length'は単に' len'を呼び出し、Djangoはクエリーセットがまだ評価されていない場合に 'count(*)'を実行するのに十分なインテリジェントです。実際には、後でそれをやり直すつもりなら、 'len'は2つのdbコールを行うのを妨げるので、より効率的にすることができます。 –

+0

おかげさまで、私はDjangoが「長さ」についてとても賢かったとは思っていませんでした。そして、あなたは 'len' *がより効率的になることができるという事実について明らかに正しいです。 –

1

count()メソッドは、呼び出されたクエリセットによって取得されたアイテムの数を取得します。

+0

はしかし、注意することはその '{{articles.count}}' –

+2

一つのことのようにそれを使用してください。クエリーセットがまだ評価されていなければ、 'count'はSQL COUNTを実行します。その後、後で反復すると、別のDBクエリ(SELECT)が行われます。それは2つの質問です。クエリーセットなどを実際にループする前にカウントが必要な場合は、 '{{articles | length}}'がより効率的です。 –

4

私が思うに、これを行うための最善の方法は次のとおりです。

{{ articles.count }} 
関連する問題