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

Wie gruppiere ich Daten mithilfe der Querysets von Django?

DDD
Freigeben: 2024-12-02 21:48:10
Original
672 Leute haben es durchsucht

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()
Nach dem Login kopieren

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')]
Nach dem Login kopieren

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()
)
Nach dem Login kopieren

Diese Abfrage generiert eine ähnliche SQL-Anweisung zu:

SELECT designation, COUNT(designation) AS dcount
FROM members
GROUP BY designation
Nach dem Login kopieren

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}]
Nach dem Login kopieren

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')
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage