如何在两个 for 循环中获取 forloop.counter

How to get forloop.counter inside two forloops

我在另一个 for 循环中有一个 for 循环,我试图从内部循环获取索引 (forloop.counter)。 Django 出于某种原因只给我外部索引。

{% for category in categories %}
 {% for product in products %}
  {% if product.category.name == category.name %}
   <p>This is the amount of products inside this category: {{ forloop.counter }}<p>
  {% endif %}
 {% endfor %}
{% endfor %}

您可以使用 forloop.parentloop 到达外部 forloop,因此在本例中为 {{forloop.parentloop.counter}}。 {{forloop.counter}} 已经给了我内循环。

Return 到类别视图(例如在 views.py 中)并添加注释:

from django.db.models import Count
categories = Category.objects.annotate(num_products=Count('product'))

记得在此视图的上下文中包含注释:

context.update({'categories': categories})
return render(request, 'myapp/categories.html', context)

现在,调整您的模板以显示计数:

{% for category in categories %}
 <p>This is the amount of products inside this category: {{ category.num_products }}<p>
{% endfor %}