Maison  >  Article  >  base de données  >  Comment effectuer une jointure interne dans Django en utilisant `select_rated` ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-10-29 21:26:02615parcourir

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 :

<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>

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

<code class="sql">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" ) </code>

Le récupéré les valeurs 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 démontré ci-dessous :

<code class="html">{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}</code>

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

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!

Déclaration:
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