gpt4 book ai didi

Django:即使通过相关模型过滤也返回所有值

转载 作者:行者123 更新时间:2023-11-29 14:02:34 25 4
gpt4 key购买 nike

感谢对上一个问题的一些出色帮助,我已经设法整理了我的查询。除一个问题外,一切正常。

    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。

最佳答案

我认为您需要交换 annotatefilter 子句。参见 the documentation on this - 按照您的方式,它会过滤查询集,但您实际上想要保留整个查询集,而只是过滤注释

关于Django:即使通过相关模型过滤也返回所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2131989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com