In Django erfordert das Abrufen von Daten aus der Datenbank häufig die Verwendung von Abfragesätzen. Diese Abfragesätze bieten verschiedene Methoden zum Filtern, Sortieren und Bearbeiten von Daten. Eine häufige Operation ist das Gruppieren von Daten nach einem bestimmten Feld, ähnlich der SQL-GROUP BY-Klausel.
Um Daten in Django zu gruppieren, kann man die Aggregationsfunktionen des ORM nutzen. Betrachten Sie beispielsweise die folgende Abfrage, die alle Mitglieder abruft:
Members.objects.all()
Diese Abfrage gibt eine Liste von Tupeln zurück, wobei jedes Tupel die Details eines Mitglieds darstellt:
[('Eric', 'Salesman', 'X-Shop'), ('Freddie', 'Manager', 'X2-Shop'), ('Teddy', 'Salesman', 'X2-Shop'), ('Sean', 'Manager', 'X2-Shop')]
Um diese Ergebnisse zu gruppieren Im Bezeichnungsfeld kann man die Methoden „values()“ und „annotate()“ verwenden:
from django.db.models import Count result = ( Members.objects .values('designation') .annotate(dcount=Count('designation')) .order_by() )
Diese Abfrage generiert eine ähnliche SQL-Anweisung zu:
SELECT designation, COUNT(designation) AS dcount FROM members GROUP BY designation
Das Ergebnis ist eine Liste von Wörterbüchern, die jeweils eine Bezeichnung und die Anzahl der Mitglieder für diese Bezeichnung darstellen:
[{'designation': 'Salesman', 'dcount': 2}, {'designation': 'Manager', 'dcount': 2}]
Um mehrere Felder in die Ergebnisse einzuschließen, einfach Fügen Sie sie als Argumente zur Methode „values()“ hinzu, wie hier gezeigt:
.values('designation', 'first_name', 'last_name')
Weitere Informationen zur Aggregation und Gruppierung in Django finden Sie in den folgenden Ressourcen:
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Daten mithilfe der Querysets von Django?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!