Heim >Backend-Entwicklung >Python-Tutorial >Wie gruppiere ich Daten mithilfe der Querysets von Django?

Wie gruppiere ich Daten mithilfe der Querysets von Django?

DDD
DDDOriginal
2024-12-02 21:48:10629Durchsuche

How to Group Data Using Django's Querysets?

Gruppieren von Daten in Django-Abfragen

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.

Aggregation für die Gruppierung

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')

Referenzen

Weitere Informationen zur Aggregation und Gruppierung in Django finden Sie in den folgenden Ressourcen:

  • Django-Dokumentation: [Werte](https://docs.djangoproject.com/en/stable/ref/models/querysets/#values) , [Annotieren](https://docs.djangoproject.com/en/stable/ref/models/querysets/#annotate), [Anzahl](https://docs.djangoproject.com/en/stable/ref/models/querysets/#django.db.models.Count)
  • Django-Dokumentation: [Aggregation](https:// docs.djangoproject.com/en/stable/topics/db/aggregation/), insbesondere der Abschnitt über [Interaktion mit Standardreihenfolge oder order_by()](https://docs.djangoproject.com/en/stable/topics/db/aggregation/#interaction-with-default-ordering-or-orderby)

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!

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