【发布时间】:2021-05-23 01:00:47
【问题描述】:
如何重置django模板中的forloop计数器?
这是我当前的查询集:
context['major'] = Major.objects.all().filter(is_active=True).order_by('id')
context['minor'] = Minor.objects.all().filter(is_active=True).order_by('id')
这是我的模特:
class Major(models.Model):
major_name = models.CharField(max_length=100, default='', null=False)
is_active = models.BooleanField(default=True, null=False)
def __str__(self):
return self.major_name
class Minor(models.Model):
major_name = models.ForeignKey(Major, on_delete=models.CASCADE)
minor_name = models.CharField(max_length=100, default='', null=False)
is_active = models.BooleanField(default=True, null=False)
def __str__(self):
return self.minor_name
所以我有这样的事情:
{% for major in majors %}
{% for minor in minors %}
{% if minor.major_name == major %}
{{forloop.counter}} {{minor}}
{% endif %}
{% endfor %}
{% endfor %}
当前输出:
major1
1 minor1
2 minor2
major2
3 minor3
4 minor4
5 minor5
...
我希望它显示如下内容:
major1
1 minor1
2 minor2
major2
1 minor3
2 minor4
3 minor5
...
【问题讨论】:
-
您能否将
majors和minors模型和查询集添加到您的问题中?更改您定义或迭代数据的方式可能会更容易,因为像您要求的那样“重置”forloop 计数器并非微不足道/可能 -
添加了我的查询集。
-
我也尝试在模板中添加 {%with%} 标签,但我认为我不能从标签中增加变量
-
你也可以添加模型吗?
-
也添加了...
标签: django