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

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

Linda Hamilton
Libérer: 2024-10-29 21:26:02
original
698 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal