我有兩個表:Actor和Images。 Images表通過外鍵鏈接到Actor表。我可能會在Actor上查詢一個名字以A開頭的所有actor。假設我將這個查詢結果存儲在actor_list中,並將它傳遞給模板。通過迭代,我可以通過模板獲取所有圖像的列表。例如:django查詢費用
{% for actor in actor_list %}
{% for image in actor.img_set %}
{{ image }}
{% endfor %}
{% endfor %}
這對數據庫來說代價高嗎?每次我調用actor.img_set時,關聯的img_set是否會與最初的actor對象列表通過,或者新的查詢是否會觸發數據庫?
同意調試工具欄的建議,但是'select_related()'在反向關係的情況下是無效的,這似乎是。 – 2010-10-18 12:46:34
@ed:除了Daniel的評論和你的最後一個問題:如果這是一個反向關係,數據庫將被擊中每個演員得到他的形象設置... – 2010-10-18 12:54:00
感謝您的輸入。後續問題。在從Django調試工具欄中檢查SQL後,我發現數據庫即使是這樣:{{actor_list.0.id}}。爲什麼在創建actor_list時SQL查詢已經結束?但是如果我迭代actor_list並以這種方式拉取id,則不會創建額外的查詢 – 2010-10-19 14:37:10