Я немного думаю о концепции агрегатов Django. Я не совсем понимаю, как их можно использовать в моем случае. По сути, в моей модели есть трехуровневая иерархия объектов, а самый нижний объект (Bar) содержит значения, которые я хочу объединить.
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" сделать это:)