Dans Django, la récupération de données de la base de données implique souvent l'utilisation d'ensembles de requêtes. Ces ensembles de requêtes fournissent diverses méthodes pour filtrer, trier et manipuler les données. Une opération courante consiste à regrouper les données par un champ spécifique, similaire à la clause SQL GROUP BY.
Pour regrouper les données dans Django, on peut utiliser les fonctionnalités d'agrégation de l'ORM. Par exemple, considérons la requête suivante qui récupère tous les membres :
Members.objects.all()
Cette requête renvoie une liste de tuples, chaque tuple représentant les détails d'un membre :
[('Eric', 'Salesman', 'X-Shop'), ('Freddie', 'Manager', 'X2-Shop'), ('Teddy', 'Salesman', 'X2-Shop'), ('Sean', 'Manager', 'X2-Shop')]
Pour regrouper ces résultats par le champ de désignation, on peut utiliser les méthodes values() et annotate() :
from django.db.models import Count result = ( Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
Cette requête génère une instruction SQL similaire à :
SELECT designation, COUNT(designation) AS dcount FROM members GROUP BY designation
Le résultat est une liste de dictionnaires, chacun représentant une désignation et le nombre de membres pour cette désignation :
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
Pour inclure plusieurs champs dans les résultats, il suffit ajoutez-les comme arguments à la méthode values(), comme indiqué ici :
.values('designation', 'first_name', 'last_name')
Pour plus d'informations sur l'agrégation et regroupement dans Django, reportez-vous aux ressources suivantes :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!