Maison > base de données > tutoriel mysql > Comment trouver des départements sans bénévoles à l'aide de ORM LEFT JOIN de Django ?

Comment trouver des départements sans bénévoles à l'aide de ORM LEFT JOIN de Django ?

DDD
Libérer: 2024-12-31 03:42:17
original
136 Les gens l'ont consulté

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

LEFT JOIN Django ORM

Requête de départements sans bénévoles utilisant ORM

Dans le Django Object-Relational Mapping (ORM), vous pouvez utiliser l'opération LEFT JOIN pour récupérer des données de plusieurs tables, même s'il n'y a aucune ligne correspondante dans l'une des tables.

Pour rechercher des services auxquels aucun bénévole n'est affecté, vous pouvez utiliser l'approche suivante :

from django.db.models import OuterRef, Subquery

qs = Department.objects.filter(
    departmentvolunteer__isnull=OuterRef('pk')
).values_list('name', flat=True)
Copier après la connexion

Explication :

  • La classe OuterRef représente la clé primaire de l'instance de modèle actuelle. Dans ce cas, OuterRef('pk') fait référence à la clé primaire du modèle Department.
  • La classe Subquery est utilisée pour créer une sous-requête qui représente la table DepartmentVolunteer. Le filtre isnull vérifie si la table départementvolontaire a une ligne correspondante pour chaque département.
  • La méthode de filtrage est utilisée pour filtrer les départements qui ont des lignes correspondantes dans la table départementvolontaire. La méthode values_list est ensuite utilisée pour récupérer uniquement le champ de nom des départements correspondants.

Cette approche vous permet d'étendre les relations à valeurs multiples entre les modèles et de récupérer des données même lorsqu'il n'y a aucune correspondance dans l'un des les tables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal