要在 Django 中顯示多個相關表中的數據,通常需要內聯接。在本文中,我們將探討如何使用 Django 的 ORM(物件關聯映射器)執行內連線。
模型關係
中的models.py提供的代碼定義了下表關係:
內連線使用select_lated
實現內連接效果,可以採用Django的select_lated方法。它會預先選擇相關對像以及主要對象,從而減少存取相關資料所需的資料庫查詢數量。
在views.py中,可以使用以下程式碼來執行內部連線:
pubs = publication.objects.select_related('country', 'country_state', 'city')
檢查產生的SQL
使用str(pubs.query),可以檢查產生的 SQL 查詢。它將類似於提供的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" )
存取相關資料
內部連線後,可透過對應的模型物件屬性來存取相關資料。例如,要顯示每個出版物的城市名稱:
{% for p in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}
利用Django的select_lated,可以有效率地實現內連接,從相關表中檢索數據,減少資料庫查詢,提高效能。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3