„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann die Methode „select_lated“ von Django verwendet werden, um bei der Arbeit mit verwandten Tabellen einen Inner-Join-Effekt zu erzielen?

Wie kann die Methode „select_lated“ von Django verwendet werden, um bei der Arbeit mit verwandten Tabellen einen Inner-Join-Effekt zu erzielen?

Veröffentlicht am 18.11.2024
Durchsuche:437

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

Inner Join in Django: Zusammengehörige Tabellen verbinden

Um Daten aus mehreren zusammengehörigen Tabellen in Django anzuzeigen, ist oft ein Inner Join erforderlich. In diesem Artikel erfahren Sie, wie Sie mit Djangos ORM (Object-Relational Mapper) einen Inner Join durchführen.

Modellbeziehungen

Die models.py in der Der bereitgestellte Code definiert die folgenden Tabellenbeziehungen:

  • Land zu Landstaat (Fremdschlüssel)
  • Landstaat zu Stadt (Fremdschlüssel)
  • Veröffentlichung zu Land, Landstaat und Stadt (Fremdschlüssel)

Inner Join mit select_lated

To Um einen Inner-Join-Effekt zu erzielen, kann Djangos Methode select_lated verwendet werden. Es wählt die zugehörigen Objekte zusammen mit den Primärobjekten vorab aus und reduziert so die Anzahl der Datenbankabfragen, die für den Zugriff auf die zugehörigen Daten erforderlich sind.

In der Datei „views.py“ kann der folgende Code verwendet werden, um einen Inner Join durchzuführen:

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

Inspizieren der Generiertes SQL

Mit str(pubs.query) kann die generierte SQL-Abfrage überprüft werden. Es ähnelt der bereitgestellten SQL-Abfrage mit inneren Verknüpfungen zwischen den Tabellen:

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

Zugriff auf verwandte Daten

Nach dem Inner Join wird der Auf verwandte Daten kann über die jeweiligen Modellobjektattribute zugegriffen werden. Um beispielsweise den Städtenamen für jede Veröffentlichung anzuzeigen:

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

Durch die Verwendung von Djangos select_lated können Inner Joins effizient implementiert werden, um Daten aus verwandten Tabellen abzurufen, Datenbankabfragen zu reduzieren und die Leistung zu verbessern.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3