在Django模板,當你做一個循環來爲衆多用戶顯示的個人資料信息,你叫get_profile,從而產生儘可能多的SQL請求:get_profile在Django模板循環導致許多SQL請求
{% for user in users %}
{{ user.username }} : {{ user.get_profile.birth_date }}
{% endfor %}
如果您有50個用戶可以顯示,它將生成50個SQL請求以獲取每個用戶的配置文件。
有沒有一種優雅的方式來減少請求的數量?
編輯:
的最終目標是管理列表中的項目,其中一個項目有一個用戶對象的屬性。 示例:每個在stackoverflow中的問題都有一個用戶作爲創建者。如何列出所有最近的問題,而在最低SQL請求顯示的用戶配置文件信息:
模板應該是這樣的:
{% for question in recent_questions %}
{{ question.title }}
{{ question.body }}
{{ question.creator.username }}
{{ question.creator.get_profile.age }}
{{ question.creator.get_profile.country }}
{% endfor %}
但是,這將產生太多的SQL請求......
我把這個問題做了精度:在我的情況下,循環在配置文件是不可能的 – Eric