我在思考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 方式”:)