[PYTHON] Jointure externe gauche dans le modèle Django

Déclencheur

Notez qu'il était difficile de trouver des informations sur la jointure externe gauche dans l'ORM de Django.

En parlant de rejoindre l'ORM de Django

J'utilise souvent select_related () et prefetch_related () pour extraire les éléments que le modèle spécifie comme clés externes.

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

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

Par exemple, si un tel modèle est défini, il peut être tiré comme suit.

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

Il semble que l'extraction inversée soit possible si une seule donnée est utilisée comme référence.

comments = User.objects.get(pk=1).comment_set.all()
# id=Vous pouvez extraire les commentaires qui contiennent 1 utilisateur

Si vous faites quelque chose comme ↑, vous constaterez que la jointure Django est principalement une jointure interne. Que faites-vous de la jointure externe après avoir commencé à utiliser le système d'agrégation? Ce sera.

méthode de jointure externe gauche

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

C'est vrai.

Résumé

Je l'ai vérifié une fois mais je l'ai oublié, alors je l'ai noté. Il est important que les éléments soient déclarés avec models.ForeignKey () à combiner. (Sinon, vous ne pouvez pas faire quelque chose comme comment.user.name)

Recommended Posts

Jointure externe gauche dans le modèle Django
Générer automatiquement un diagramme de relation de modèle avec Django
Modèle Django: ManyToManyField
Internationalisation avec Django
CRUD avec Django
Authentifier Google avec Django
Django 1.11 a démarré avec Python3.6
Télécharger des fichiers avec Django
Résumé du développement avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
Twitter OAuth avec Django
Premiers pas avec Django 1
Montage du modèle avec lmfit
Envoyer des e-mails avec Django
Modifications du modèle dans Django
Django haute performance - Modèle
Téléchargement de fichiers avec django
Régression avec un modèle linéaire
Utilisez LESS avec Django
La mutualisation mécanise avec Django
Utiliser MySQL avec Django
Django à partir d'aujourd'hui
Premiers pas avec Django 2
[Django] Gérez les paramètres comme l'écriture dans settings.py avec un modèle
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Wai "Django peut-il REJOINDRE?"
Environnement de site Web de configuration minimale avec django
Créer une API avec Django
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Déployer Django sans serveur avec Lambda
Python3 + Django ~ Mac ~ avec Apache
Premiers pas avec Python Django (1)
Créer une page d'accueil avec django
Lancez-vous avec Django! ~ Tutoriel ④ ~
Premiers pas avec Python Django (4)
Créer une application Web avec Django
Premiers pas avec Python Django (3)
Combinez Fast API avec Django ORM
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Utilisez Django pour enregistrer les données de tweet
Effectuer le cryptage AES avec DJango
Utiliser le modèle django de l'interpréteur
Introduction à Python Django (6)
Calibrer le modèle avec PyCaret
Combinez deux images avec Django
Premiers pas avec Django avec PyCharm
Web en temps réel avec les chaînes Django
Suppression de double envoi avec Django
Framework Django REST avec Vue.js
Utilisez prefetch_related commodément avec Django
Premiers pas avec Python Django (5)
Connectez-vous avec Django Rest Framework
Qiita API Oauth avec Django
django-rest-framework Le modèle Django empêche les mises à jour simultanées des données avec un contrôle exclusif optimiste de PostgreSQL