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
Barbara Streisandoriginal
2024-10-29 09:28:02772parcourir

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>

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>

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>

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!

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