我想了一下關於Django aggregates.的概念我不太「得到」他們如何在我的情況下使用。基本上我的模型中有三層對象,最低的對象(Bar)包含我想要聚合的值。模板中的Django聚合?
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,所以我想知道這樣做:)