Django 集計の概念について少し考えています。私の場合、それらをどのように使用できるかはよくわかりません。基本的に、モデルには 3 層のオブジェクト階層があり、最下層のオブジェクト (バー) には集計したい値が含まれています。
class Bar(models.Model):
amount = models.FloatField()
class Foo(models.Model):
bars = models.ManyToManyField(Bar)
class MyUser(models.Model):
foos = models.ManyToManyField(Foo)
テンプレートでこれと同等のことをしたい:
{% for user in users %}
<h2>{{ user }}</h2>
<table>
<tr>
<td>Foo</td><
<td>Average bar amount</td>
</tr>
{% for foo in user.foos.all %}
<tr>
<td>{{ foo }}</td>
<td>{{ foo.bars.all.aggregate(Avg('amount')) }}
</tr>
{% endfor %}
</table>
{% endfor %}
しかし、もちろん、このテンプレートは単なる疑似コードです。機能しません。おそらく、テンプレートは設計上、これを行うことを想定していないからです。しかし一方で、私の見解では、平均額を事前に計算しなければならないことも間違っていると感じます. この問題にはどのようにアプローチすべきでしょうか?
私はまだDjangoに慣れていないので、これを行う「Djangoの方法」を知りたい:)