Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement des données de ville, d'état et de pays à partir de tables associées dans Django ?

Comment puis-je récupérer efficacement des données de ville, d'état et de pays à partir de tables associées dans Django ?

Barbara Streisand
Libérer: 2024-10-29 09:28:02
original
808 Les gens l'ont consulté

How Can I Efficiently Retrieve City, State, and Country Data from Related Tables in Django?

Jointure interne de plusieurs tables dans Django

Pour afficher la ville, l'état et le pays des publications, qui sont stockées dans des tables séparées, vous peut effectuer une jointure interne dans Django en utilisant la méthode select_rated().

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

Cette requête produira une instruction SQL similaire à :

<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 curseur pubs renvoyé contient des objets avec le Les valeurs des tables associées sont pré-remplies, vous permettant d'y accéder sans accès supplémentaires à la base de données :

<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

Cette approche est efficace et évite les requêtes inutiles pour récupérer les données associé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