厳密なMVCで非常に厄介なことの1つは、テンプレートで最小の処理を実行できることです。通常は良い習慣ですが、この場合は邪魔になります。
- 多くのオブジェクトのクエリセットでforループを作成し、いくつかの属性を表示します。
- 属性はプロパティであり、処理が重くなります(2回トリガーしたくありません)。
- 最後に、これらの属性の値の合計を表示する必要があります。
ここで、ビューで合計を1回実行してから、ループを再実行して(そしてプロパティを再度呼び出して)表示する必要があります。ビューで一度ループして結果をキャッシュすることでこれを改善できますが、この制限を回避するためだけにコードを取得し、より多くのメモリを使用します。
プロジェクトのこの段階では、それほど大したことではありません。パフォーマンスはまだ問題ではありません。しかし、私は本当にこれに対する解決策があることを知りたいです。
私の最善の策は、その仕事をするテンプレートタグを書くことですが、それはそのような雑用です:-)あなたはすでにそれをしただろう誰かを知っていますか?
例えば:
理想的には、次のようになります。
{% for object in object_list %}
- {% sum_in_and_print object.property total %}
{% endfor %}
total {{ total }}
表示されます:
- 2
- 3
- 1
total 6