Je pense un peu au concept de Django aggregates. Je ne comprends pas vraiment comment ils peuvent être utilisés dans mon cas. Fondamentalement, j'ai une hiérarchie d'objets à trois niveaux dans mon modèle, et l'objet le plus bas (Bar) contient des valeurs que je veux agréger.Agrégation Django dans les modèles?
class Bar(models.Model):
amount = models.FloatField()
class Foo(models.Model):
bars = models.ManyToManyField(Bar)
class MyUser(models.Model):
foos = models.ManyToManyField(Foo)
Je veux que mon modèle pour faire l'équivalent de ceci:
{% 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 %}
Mais bien sûr, ce modèle est juste pseudo code, il ne fonctionnera pas parce que, je suppose, les modèles ne sont pas censés faites ceci par conception. Mais d'un autre côté, avoir à pré-calculer les montants moyens à mon avis aurait tort aussi. Comment ce problème devrait-il être abordé?
Je suis encore nouveau pour Django, donc je veux savoir la « façon Django » de le faire :)