Heim  >  Artikel  >  Datenbank  >  Wie können Sie verwandte Tabellen in Django-Modellen für Veröffentlichungsinformationen effizient verknüpfen?

Wie können Sie verwandte Tabellen in Django-Modellen für Veröffentlichungsinformationen effizient verknüpfen?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 11:12:49937Durchsuche

How Can You Efficiently Join Related Tables in Django Models for Publication Information?

Erstellen einer inneren Verknüpfung in Django

Problem: Zusammenführen verwandter Tabellen in verschiedenen Modellen

Sie möchten Stadt, Bundesland und Land einer Publikation anzeigen Informationen in einer HTML-Vorlage. Diese Details werden jedoch in separaten Datenbanktabellen gespeichert.

Die Modelle verstehen

Die relevanten Modelle in Ihrer models.py-Datei sind:

  • Land: Land der Geschäfte Namen und Subdomains
  • Landstaat: Verknüpft Staatsnamen mit ihren jeweiligen Ländern
  • Stadt: Verknüpft Städtenamen mit den jeweiligen Bundesstaaten
  • Veröffentlichung: Enthält Veröffentlichungsdaten, einschließlich Fremdschlüsselverweisen auf Land, Landstaat und Stadt

Die SQL-Abfrage in Python

Sie möchten eine äquivalente SQL-Abfrage in Ihrer Django-Ansicht mit der folgenden Struktur schreiben:

<code class="sql">SELECT p.user_id, p.title, c.cuntry_id, c.country_name, s.state_id, s.state_name, y.city_id, y.city_name
FROM publication AS p
INNER JOIN country AS c ON c.id = p.country_id
INNER JOIN countrystate AS s ON s.id = p.countrystate_id
INNER JOIN city AS y ON y.id = p.city_id</code>

Lösung mit select_lated()

Um einen Inner Join in Django durchzuführen, verwenden Sie die Methode select_lated() für den Veröffentlichungsabfragesatz:

<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>

Dies führt zu einer einzelnen Abfrage, die verknüpft die Veröffentlichungstabelle mit den zugehörigen Länder-, Bundesland- und Stadttabellen. Die resultierenden Objekte haben über Objektattribute Zugriff auf die verbundenen Daten, sodass keine zusätzlichen Datenbankabfragen erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie können Sie verwandte Tabellen in Django-Modellen für Veröffentlichungsinformationen effizient verknüpfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn