Maison > développement back-end > Tutoriel Python > Comment effectuer des requêtes groupées dans Django ?

Comment effectuer des requêtes groupées dans Django ?

DDD
Libérer: 2024-12-05 18:07:10
original
290 Les gens l'ont consulté

How Do I Perform Group By Queries in Django?

Requêtes de groupe par dans Django

Contexte

Lors de l'interrogation d'un modèle Django, vous pouvez rencontrer un scénario dans lequel vous devez effectuer un groupe par opération . Tenter d'utiliser .group_by() comme vous le feriez dans SQL entraîne une erreur.

Fonctionnalités d'agrégation

Au lieu d'utiliser .group_by(), Django fournit des méthodes d'agrégation qui vous permettent d'effectuer des requêtes complexes. impliquant des regroupements. Plus précisément, Count est utile pour compter les occurrences d'un champ particulier.

Exemple

Pour regrouper les résultats par désignation et compter les occurrences, vous utiliserez le code suivant :

from django.db.models import Count

result = (Members.objects
    .values('designation')
    .annotate(dcount=Count('designation'))
    .order_by()
)
Copier après la connexion

Cette requête est similaire à l'instruction SQL suivante :

SELECT designation, COUNT(designation) AS dcount
FROM members GROUP BY designation
Copier après la connexion

La sortie de la requête Django serait dans le form :

[{'designation': 'Salesman', 'dcount': 2}, 
 {'designation': 'Manager', 'dcount': 2}]
Copier après la connexion

Notes supplémentaires

  • Incluez order_by() pour garantir un tri correct.
  • Pour inclure plusieurs champs dans les résultats, transmettez-les comme arguments à .values().
  • Reportez-vous à la documentation de Django sur les valeurs(), annotate() et Count pour en savoir plus informations.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal