感谢上一个问题的一些奇妙帮助,我设法整理了我的查询。一切工作都可以保存一个问题。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