Heim > Datenbank > MySQL-Tutorial > Wie finde ich mit Djangos ORM LEFT JOIN Abteilungen ohne Freiwillige?

Wie finde ich mit Djangos ORM LEFT JOIN Abteilungen ohne Freiwillige?

DDD
Freigeben: 2024-12-31 03:42:17
Original
136 Leute haben es durchsucht

How to Find Departments with No Volunteers Using Django's ORM LEFT JOIN?

LINKS JOIN Django ORM

Abfragen nach Abteilungen ohne Freiwillige, die ORM verwenden

In der Im Django Object-Relational Mapping (ORM)-Framework können Sie die LEFT JOIN-Operation verwenden, um Daten abzurufen mehrere Tabellen, auch wenn es in einer der Tabellen keine passenden Zeilen gibt.

Um nach Abteilungen zu suchen, denen keine Freiwilligen zugewiesen sind, können Sie den folgenden Ansatz verwenden:

from django.db.models import OuterRef, Subquery

qs = Department.objects.filter(
    departmentvolunteer__isnull=OuterRef('pk')
).values_list('name', flat=True)
Nach dem Login kopieren

Erklärung:

  • Die OuterRef-Klasse stellt den Primärschlüssel der aktuellen Modellinstanz dar. In diesem Fall bezieht sich OuterRef('pk') auf den Primärschlüssel des Department-Modells.
  • Die Subquery-Klasse wird verwendet, um eine Unterabfrage zu erstellen, die die Tabelle „departmentvolunteer“ darstellt. Der isnull-Filter prüft, ob die Tabelle „departmentvolunteer“ für jede Abteilung eine passende Zeile enthält.
  • Die Filtermethode wird verwendet, um Abteilungen herauszufiltern, die übereinstimmende Zeilen in der Tabelle „departmentvolunteer“ haben. Die Methode „values_list“ wird dann verwendet, um nur das Namensfeld der übereinstimmenden Abteilungen abzurufen.

Mit diesem Ansatz können Sie mehrwertige Beziehungen zwischen Modellen aufspannen und Daten abrufen, selbst wenn es in einem davon keine Übereinstimmungen gibt die Tische.

Das obige ist der detaillierte Inhalt vonWie finde ich mit Djangos ORM LEFT JOIN Abteilungen ohne Freiwillige?. 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