如何在 Jinja2 模板 Django 中计算循环“for in”中的所有元素
Posted
技术标签:
【中文标题】如何在 Jinja2 模板 Django 中计算循环“for in”中的所有元素【英文标题】:How can I count all elements in loop "for in" in Jinja2 templates Django 【发布时间】: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”?
【问题讨论】:
【参考方案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 中更改了“注释”以上是关于如何在 Jinja2 模板 Django 中计算循环“for in”中的所有元素的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 jinja2/django 模板中任何变量的大小写?
带有缓存加载器的 Jinja2 与 django 模板 - 性能比较如何?
如何在脚本中使用 django-template 而不是 jinja2?