Prologue:Comment exécuter un GROUP BY ... COUNT ou SUM dans Django ORM?
C'est une question qui se pose souvent SO:
- Django Models Group By
- Django equivalent for count and group by
- How to query as GROUP BY in django?
- How to use the ORM for the equivalent of a SQL count, group and join query?
J'ai composé un exemple sur la documentation de SO mais comme la documentation va se fermer le 8 août 2017, je vais suivre la suggestion de this widely upvoted and discussed meta answer et transformer mon exemple en un message auto-répondu.
Bien sûr, je serais plus qu'heureux de voir une approche différente aussi !!
Question:
Assumer le modèle:
class Books(models.Model):
title = models.CharField()
author = models.CharField()
price = models.FloatField()
Comment puis-je effectuer les requêtes suivantes sur ce modèle en utilisant Django ORM:
GROUP BY ... COUNT
:SELECT author, COUNT(author) AS count FROM myapp_books GROUP BY author
GROUP BY ... SUM
:SELECT author, SUM (price) AS total_price FROM myapp_books GROUP BY author