Maison > base de données > tutoriel mysql > le corps du texte

Comment la méthode `select_rated` de Django peut-elle être utilisée pour obtenir un effet de jointure interne lorsque vous travaillez avec des tables liées ?

Mary-Kate Olsen
Libérer: 2024-10-31 05:51:02
original
828 Les gens l'ont consulté

How can Django's `select_related` method be used to achieve an inner join effect when working with related tables?

Jointure interne dans Django : connexion de tables associées

Pour afficher les données de plusieurs tables liées dans Django, une jointure interne est souvent nécessaire. Dans cet article, nous allons explorer comment effectuer une jointure interne à l'aide de l'ORM (Object-Relational Mapper) de Django.

Relations de modèle

Le models.py dans le le code fourni définit les relations de table suivantes :

  • pays vers paysétat (clé étrangère)
  • paysétat vers ville (clé étrangère)
  • publication vers pays, paysétat et city ​​(clés étrangères)

Jointure interne utilisant select_rated

Pour obtenir un effet de jointure interne, la méthode select_rated de Django peut être utilisée. Il présélectionne les objets associés ainsi que les objets principaux, réduisant ainsi le nombre de requêtes de base de données requises pour accéder aux données associées.

Dans vues.py, le code suivant peut être utilisé pour effectuer une jointure interne :

<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>
Copier après la connexion

Inspection du SQL généré

À l'aide de str(pubs.query), la requête SQL générée peut être inspectée. Cela ressemblera à la requête SQL fournie, avec des jointures internes entre les tables :

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

Accès aux données associées

Après la jointure interne, les données associées sont accessibles via les attributs d'objet de modèle respectifs. Par exemple, pour afficher le nom de la ville pour chaque publication :

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}
Copier après la connexion

En utilisant select_rated de Django, les jointures internes peuvent être efficacement implémentées pour récupérer les données des tables associées, réduisant ainsi les requêtes de base de données et améliorant les performances.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!