Благодаря некоторой фантастической помощи по предыдущему вопросу мне удалось собрать свой запрос. Все работает плавно, за исключением одного вопроса.
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.