Подсчет булевых значений внутри цикла for в шаблоне django

Я хотел бы знать, как подсчитать все булевы true/false внутри цикла for в моем шаблоне django, но я не уверен, как этого добиться внутри цикла. Моя цель - показать пользователю, сколько вопросов осталось нерешенными/решенными.

допустим, это мои модели:

class Category(models.Model):
    name = models.CharField(max_length=50)

class Question(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    description = models.TextField(max_length=250)
    solved = models.BooleanField(default=False)

ListView:

class CategoryView(ListView):
    model = Category
    context_object_name = 'categories'

Шаблон:

{% for category in categories %} 
    {{ category.name }}         # I would like to show: 5/10 questions solved
    {% for question in category.question_set.all %} 
        {{ question.name }}
        {{ question.title }}
        {{ question.description }}
        {{ question.solved }}
    {% endfor %}
{% endfor %}

Обычно я вывожу общее количество объектов с помощью .count, например: {{ cagetories.count }}
. Но я не могу сделать это внутри цикла, потому что он возвращает: 1 1 1 1 1 1 1:

{% for question in category.question_set.all %}
    {% if not question.solved %}
        {{ question.count }} ## returns 1 1 1 1 1 1
    {% endif %}
{% endfor %}

То же самое с {{ forloop.counter }} он возвращает несколько чисел из-за цикла, но мне нужно только последнее число:

{% for question in category.question_set.all %} 
    {% if not question.solved %}
        {{ forloop.counter }} # returns; 1 2 3 4 5 6
    {% endif %}
{% endfor %}
<

Лучше было бы вычислять это внутри представления, а не в шаблоне:

class CategoryView(ListView):
    model = Category

    def get(self, request, *args, **kwargs):
        categories = []
        for category in self.get_queryset():
            questions = category.question_set.all()
            count = sum([q.solved for q in questions])
            categories.append([questions, count])
        return render(request, 'TEMPLATE NAME HERE', {'categories': categories})

Теперь в шаблоне вы можете просмотреть каждую категорию, а также получить доступ к количеству решенных задач:

{% for questions, solved_count in categories %} 
    {# display solved count and then loop through questions #}
{% endfor %}
Вернуться на верх