"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment effectuer une jointure interne dans Django en utilisant `select_rated` ?

Comment effectuer une jointure interne dans Django en utilisant `select_rated` ?

Publié le 2024-11-04
Parcourir:257

How to Perform an Inner Join in Django Using `select_related`?

Comment exécuter une jointure interne dans Django

Pour présenter les données interconnectées de plusieurs tables dans votre application Django, vous pourriez rencontrer le besoin pour effectuer une opération de jointure interne. En tirant parti de la méthode select_rated, vous pouvez y parvenir sans effort.

Considérez le scénario suivant : vous souhaitez afficher les noms de ville, d'état et de pays d'une publication dans un modèle HTML. Cependant, ces détails sont stockés dans des tableaux séparés. Pour récupérer ces informations à l'aide d'une jointure interne, vous pouvez utiliser la méthode select_rated comme suit :

pubs = publication.objects.select_related('country', 'country_state', 'city')

Cette requête générera une instruction SQL similaire à la suivante :

SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ...  
FROM "publication" 
INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) 
INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) 
INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" ) 

Les valeurs récupérées seront automatiquement converties en instances de modèle ORM. Cela vous permet d'accéder aux valeurs de table associées via leurs objets respectifs dans une boucle, comme illustré ci-dessous :

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}

En employant cette technique, vous pouvez extraire efficacement des données de plusieurs tables et présenter des informations interconnectées dans vos modèles HTML, tout en évitant des accès supplémentaires à la base de données pour les relations avancées présélectionnées.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3