[PYTHON] Linke äußere Verbindung im Django-Modell

Auslösen

Beachten Sie, dass es schwierig war, Informationen zu Left Outer Join in Djangos ORM zu finden.

Apropos Teilnahme an Djangos ORM

Ich verwende oft select_related () undprefetch_related (), um Elemente abzurufen, die das Modell als externe Schlüssel angibt.

class User(models.Model):
    name = models.CharField()

class Comment(models.Model):
    user = models.ForeignKey(User, null=True)
    content = models.CharField()

Wenn beispielsweise ein solches Modell definiert ist, kann es wie folgt gezogen werden.

comment = Comment.objects.select_related().first()
print(comment.user.name)

Es scheint, dass das Rückwärtsziehen möglich ist, wenn nur eine Daten als Referenz verwendet wird.

comments = User.objects.get(pk=1).comment_set.all()
# id=Sie können Kommentare extrahieren, die 1 Benutzer enthalten

Wenn Sie so etwas wie ↑ machen, werden Sie feststellen, dass der Django-Join meistens ein Inner-Join ist. Was machen Sie mit Outer Join, nachdem Sie mit dem Betrieb des Aggregationssystems begonnen haben? Es wird sein.

linke äußere Verknüpfungsmethode

comments = Comment.objects.filter(user__isnull=True)

Korrekt.

Zusammenfassung

Ich habe es einmal überprüft, aber vergessen, also habe ich es aufgeschrieben. Es ist wichtig, dass die Elemente mit models.ForeignKey () deklariert werden, um sie zu kombinieren. (Andernfalls können Sie so etwas wie comment.user.name nicht ausführen.)

Recommended Posts

Linke äußere Verbindung im Django-Modell
Generieren Sie automatisch ein Modellbeziehungsdiagramm mit Django
Django-Modell: ManyToManyField
Internationalisierung mit Django
CRUD mit Django
Authentifizieren Sie Google mit Django
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Twitter OAuth mit Django
Erste Schritte mit Django 1
Modellbefestigung mit lmfit
Mail mit Django senden
Modelländerungen in Django
Hochleistungs-Django - Modell
Datei-Upload mit Django
Regression mit einem linearen Modell
Verwenden Sie WENIGER mit Django
Pooling mechanisieren mit Django
Verwenden Sie MySQL mit Django
Django ab heute
Erste Schritte mit Django 2
[Django] Verwalten Sie Einstellungen wie das Schreiben in settings.py mit einem Modell
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Wai "Kann Django mitmachen?"
Minimale Konfigurations-Website-Umgebung mit Django
Erstellen Sie eine API mit Django
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie Django serverlos mit Lambda bereit
Python3 + Django ~ Mac ~ mit Apache
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Fangen Sie mit Django an! ~ Tutorial ④ ~
Erste Schritte mit Python Django (4)
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Verwenden Sie Django, um Tweet-Daten zu speichern
Führen Sie eine AES-Verschlüsselung mit DJango durch
Verwenden Sie das Django-Modell vom Interpreter
Einführung in Python Django (6)
Kalibrieren Sie das Modell mit PyCaret
Kombiniere zwei Bilder mit Django
Erste Schritte mit Django mit PyCharm
Echtzeit-Web mit Django-Kanälen
Doppelte Submit-Unterdrückung mit Django
Django REST Framework mit Vue.js
Verwenden Sie prefetch_related bequem mit Django
Erste Schritte mit Python Django (5)
Melden Sie sich mit dem Django Rest Framework an
Qiita API Oauth mit Django
django-rest-framework Das Django-Modell verhindert gleichzeitige Datenaktualisierungen mit optimistischer exklusiver Kontrolle über PostgreSQL