Sv.
Sv.

Reputation: 51

How can I count all elements in loop "for in" in Jinja2 templates Django

I tried to use loop:

user_list = <QuerySet [<TableUsers: Jane>, <TableUsers: Kate>, <TableUsers: Jons>, <TableUsers: Jacob>, <TableUsers: Jane>, <TableUsers: Jons>, <TableUsers: Jane>]>
{% for user in user_list %}
  {% if user.name == "Jane" %}
    {{all_count_username_jane}} # this is all count user with name Jane
    {{user.name}}
  {% elif user.name == "Jons" %}
    {{all_count_username_jons}} # this is all count user with name Jons
    {{user.name}}
  {% endif %}
{% endfor %}

How can I count all "Jane" and "Jons"?

Upvotes: 1

Views: 404

Answers (1)

Roham
Roham

Reputation: 2110

If you used something like user_list = SomeModel.objects.all(), you can replace it by something like

from django.db.models import Count

user_list = SomeModel.objects.values('name').annotate(count_names=Count('id'))

then also change your template codes to:

{% for user in user_list %}
  {% if user.name == "Jane" %}
    {{user.count_names}} # this is all count user with name Jane
    {{user.name}}
  {% elif user.name == "Jons" %}
    {{user.count_names}} # this is all count user with name Jons
    {{user.name}}
  {% endif %}
{% endfor %}

Upvotes: 2

Related Questions