Einführung
Datenbankabfragen erfordern häufig das Verknüpfen mehrerer Tabellen Tabellen, um auf verwandte Daten zuzugreifen. In Django können solche Verknüpfungen mithilfe der Methode select_lated() erreicht werden. In diesem Artikel wird gezeigt, wie Sie mit select_lated() einen Inner Join in Django durchführen und den Namen der Stadt, des Bundeslandes und des Landes anzeigen, die einer Veröffentlichung zugeordnet sind.
Tabellen in Modellen verbinden
Die Datei models.py definiert die Datenbankmodellklassen für die verschiedenen Tabellen:
<code class="python">class Country(models.Model): country_name = models.CharField(max_length=200, null=True) class CountryState(models.Model): state_name = models.CharField(max_length=200, null=True) country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True) class City(models.Model): city_name = models.CharField(max_length=200, null=True) countrystate = models.ForeignKey(CountryState, on_delete=models.CASCADE, null=True) class Publication(models.Model): country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True) countrystate = models.ForeignKey(CountryState, on_delete=models.CASCADE, null=True) city = models.ForeignKey(City, on_delete=models.CASCADE, null=True)</code>
Veröffentlichungen in einer Ansicht abrufen
Die Publikationen() Ansicht in Ansichten.py ruft Veröffentlichungen ab:
<code class="python">def publications(request): mypublications = publication.objects.filter(user_id=request.session['account_id']) return render(request, 'blog/mypublications.html', {'plist': mypublications})</code>
Durchführen eines Inner Join mit select_lated()
Um den Inner Join durchzuführen, können Sie die Methode select_lated() verwenden wie folgt:
<code class="python">pubs = publication.objects.select_related('country', 'country_state', 'city')</code>
Diese Zeile verknüpft die Publikationstabelle mit den Tabellen „Land“, „CountryState“ und „City“ und lädt sie für die spätere Verwendung vor.
Zugriff auf verwandte Daten
Sobald die Verknüpfung durchgeführt wurde, können Sie über die Modellobjekte auf die zugehörigen Daten zugreifen. Zum Beispiel in einer Vorlage:
<code class="html">{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}</code>
Vorteile der Verwendung von select_lated()
Das obige ist der detaillierte Inhalt vonWie zeige ich Stadt-, Bundesland- und Länderdetails aus mehreren Tabellen mit select_related() in Django an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!