【问题标题】:How can I count all elements in loop "for in" in Jinja2 templates Django如何在 Jinja2 模板 Django 中计算循环“for in”中的所有元素
【发布时间】:2020-12-11 13:13:13
【问题描述】:

我尝试使用循环:

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 %}

如何计算所有“Jane”和“Jons”?

【问题讨论】:

    标签: django count django-templates jinja2


    【解决方案1】:

    如果你用过user_list = SomeModel.objects.all()之类的东西,你可以用类似的东西替换它

    from django.db.models import Count
    
    user_list = SomeModel.objects.values('name').annotate(count_names=Count('id'))
    

    然后还将您的模板代码更改为:

    {% 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 %}
    

    【讨论】:

    • 我用过:user_list = table_users_all.exclude(Q(user_status=1) | Q(user_status=2)).annotate(count_names=Count('id')) 但在模板中我看:> 1 简,1 简 > 1 琼,1 琼,1 琼,
    • 你说得对!我在链接 djbook.ru/rel1.9/topics/db/aggregation.html 中更改了“注释”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多