感謝上一個問題的一些奇妙幫助,我設法整理了我的查詢。一切工作都可以保存一個問題。Django:即使通過相關模型進行篩選,也會返回所有值
careers = Career.objects.filter(job__dwarf__user = 1).annotate(dwarves_in_career = Count('job__dwarf'))
在我看來,這不正是我想要的,當我環在我的模板像這樣:
{% for career in careers reversed %}
<li>{{ career.name }}: {{ career.dwarves_in_career }}</li>
{% endfor %}
我得到了我的預期。我的問題是,上面的代碼只會返回有矮人的職業。我需要它返回所有職業:
Unassigned: 1
Construction: 1
Crafting: 2
Gathering: 0
Farming: 0
是我預期的結果。相反,最後兩行不在那裏,因爲我正在篩選特定用戶。我知道爲什麼會發生這種情況,我試圖弄清楚的是如何讓查詢返回所有職業,即使他們對於特定用戶的矮人數是0.
+1'dwarves_in_career' 。頭腦非常混亂。 – 2010-01-25 13:58:44