Heim > Datenbank > MySQL-Tutorial > Wie finde ich Zeilen mit doppelten Feldwerten mithilfe von Django ORM?

Wie finde ich Zeilen mit doppelten Feldwerten mithilfe von Django ORM?

Linda Hamilton
Freigeben: 2025-01-05 08:42:41
Original
757 Leute haben es durchsucht

How to Find Rows with Duplicate Field Values Using Django ORM?

Django-Abfrage für Zeilen mit doppelten Feldwerten

Angenommen, wir haben ein Django-Modell mit einem nicht eindeutigen Feld. Wir müssen alle Zeilen aus dem Modell auswählen, die mindestens einen doppelten Wert für dieses Feld haben.

Einfacher SQL-Ansatz

Eine mögliche Lösung ist die Verwendung von einfachem SQL:

SELECT *
FROM literal
WHERE name IN (
    SELECT name
    FROM literal
    GROUP BY name
    HAVING COUNT(*) > 1
);
Nach dem Login kopieren

Django ORM-Ansatz

Verwenden Djangos ORM können wir das gleiche Ergebnis mit einer Kombination aus value(), annotate(), order_by() und filter() erzielen:

from django.db.models import Count

dupes = Literal.objects.values('name') \
                    .annotate(Count('id')) \
                    .order_by() \
                    .filter(id__count__gt=1)
Nach dem Login kopieren

Da der obige Code ein ValuesQuerySet zurückgibt, müssen wir dies tun Konvertieren Sie es in ein reguläres QuerySet, um es als Filter zu verwenden:

duplicates = Literal.objects.filter(name__in=[item['name'] for item in dupes])
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass wir nur Zeilen mit doppelten Namenswerten auswählen.

Das obige ist der detaillierte Inhalt vonWie finde ich Zeilen mit doppelten Feldwerten mithilfe von Django ORM?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage