Djangoテンプレートでは、一連の写真を繰り返して1つずつ表示しています。具体的には、今は6つのオブジェクトを含む1つの写真セットがあります。私はそうのように、これらの6つのオブジェクトを表示:ステートメントにreversed
を追加Djangoテンプレートのforループを逆にして結果をスライスする方法
{% for pic in picstream.photo_set.all reversed %}
<img src="{{ pic.image_file.url }}"></img>
{% endfor %}
を所望の順序(最初のすなわち最新のIDS)で私に6オブジェクトを提供します。
次に、photo_set
から4つ以下のオブジェクトを表示したいとします。これを達成するために|slice:":4"
〜picstream.photo_set.all
を追加しました。問題は、最初の2つのオブジェクトを切り捨てていることです。は私の望むorederingからです。それは後でがリストに最初を逆にする方法をされているべき、とスライス思わ
?パフォーマンスを低下させることなく、これを行う簡単な方法が必要です。代わりにfor
テンプレートタグのreversed
引数を使用しての
テンプレートシステムは、プログラムロジックではなく、プレゼンテーションを表現するためのものです。 –
sliceがすべての構文をサポートしていれば、最初にクエリーセットを逆転してトップ4を得る '| slice:" :: - 1 "| slice:":4 "'のようなものを使うことができます。それが良い習慣であるかどうか、あるいはその効率についてさえも。 – AKS
これはテンプレートに属していません。一方、| slice ':4'は、クエリセットオブジェクトがDjangoで評価されているため、データベースの最後に制限4のクエリが発生しますが、リストを逆にしても完全なクエリがトリガされ、あなたのdbとappサーバーの両方が不必要に。 –