Heim >Backend-Entwicklung >Python-Tutorial >Wie führe ich Gruppierungsabfragen in Django durch?

Wie führe ich Gruppierungsabfragen in Django durch?

DDD
DDDOriginal
2024-12-05 18:07:10263Durchsuche

How Do I Perform Group By Queries in Django?

Gruppieren nach-Abfragen in Django

Hintergrund

Beim Abfragen eines Django-Modells kann es vorkommen, dass Sie eine Gruppierung nach-Operation durchführen müssen . Der Versuch, .group_by() wie in SQL zu verwenden, führt zu einem Fehler.

Aggregationsfunktionen

Anstelle der Verwendung von .group_by() bietet Django Aggregationsmethoden, mit denen Sie komplexe Abfragen durchführen können Einbeziehung von Gruppierungen. Count eignet sich insbesondere zum Zählen der Vorkommen eines bestimmten Felds.

Beispiel

Um die Ergebnisse nach Bezeichnung zu gruppieren und die Vorkommen zu zählen, würden Sie den folgenden Code verwenden:

from django.db.models import Count

result = (Members.objects
    .values('designation')
    .annotate(dcount=Count('designation'))
    .order_by()
)

Diese Abfrage ähnelt der folgenden SQL-Anweisung:

SELECT designation, COUNT(designation) AS dcount
FROM members GROUP BY designation

Die Ausgabe der Django-Abfrage wäre in Form:

[{'designation': 'Salesman', 'dcount': 2}, 
 {'designation': 'Manager', 'dcount': 2}]

Zusätzliche Hinweise

  • Beziehen Sie order_by() ein, um eine korrekte Sortierung sicherzustellen.
  • Um mehrere Felder in die Ergebnisse einzuschließen, übergeben Sie sie als Argumente an .values().
  • Weitere Informationen finden Sie in der Django-Dokumentation zu value(), annotate() und Count Informationen.

Das obige ist der detaillierte Inhalt vonWie führe ich Gruppierungsabfragen in Django durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn