【发布时间】:2010-04-30 20:05:27
【问题描述】:
我正在思考Django aggregates. 的概念我不太“明白”它们在我的情况下如何使用。基本上我的模型中有一个三层的对象层次结构,最低的对象(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 方式”:)
【问题讨论】:
标签: django django-templates django-aggregation