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 :
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>
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" )
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 %}
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!