"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se puede utilizar el método `select_ related` de Django para lograr un efecto de unión interna cuando se trabaja con tablas relacionadas?

¿Cómo se puede utilizar el método `select_ related` de Django para lograr un efecto de unión interna cuando se trabaja con tablas relacionadas?

Publicado el 2024-11-18
Navegar:780

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

Unión interna en Django: conectar tablas relacionadas

Para mostrar datos de múltiples tablas relacionadas en Django, a menudo es necesaria una unión interna. En este artículo, exploraremos cómo realizar una unión interna usando ORM (Object-Relational Mapper) de Django.

Relaciones de modelos

El archivo models.py en el El código proporcionado define las siguientes relaciones de tabla:

  • país a paísestado (clave externa)
  • paísestado a ciudad (clave externa)
  • publicación a país, paísestado y ciudad (claves externas)

Unión interna usando select_ related

Para lograr un efecto de unión interna, se puede emplear el método select_ related de Django. Preselecciona los objetos relacionados junto con los objetos principales, lo que reduce la cantidad de consultas a la base de datos necesarias para acceder a los datos relacionados.

En views.py, se puede usar el siguiente código para realizar una unión interna:

pubs = publication.objects.select_related('country', 'country_state', 'city')

Inspeccionando el SQL generado

Usando str(pubs.query), se puede inspeccionar la consulta SQL generada. Se parecerá a la consulta SQL proporcionada, con uniones internas entre las tablas:

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" ) 

Acceso a datos relacionados

Después de la unión interna, el Se puede acceder a los datos relacionados a través de los respectivos atributos del objeto del modelo. Por ejemplo, para mostrar el nombre de la ciudad para cada publicación:

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}

Al utilizar select_ related de Django, las uniones internas se pueden implementar eficientemente para recuperar datos de tablas relacionadas, lo que reduce las consultas a la base de datos y mejora el rendimiento.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3