在为循环嵌套的django模板中重置forloop计数器

在为循环嵌套的django模板中重置forloop计数器,django,Django,如何在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.

如何在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
    ...

您试图实现的似乎是显示所有与
Major
实例相关的
Minor
实例,并对其进行筛选和索引

您可以将一个对象传递给,以向反向关系的相关查询集(
major.Minor\u set
)添加一个筛选器,然后在该查询集上循环,而不是一次又一次地循环所有已筛选的
Minor
实例

context['majors'] = Major.objects.filter(
    is_active=True
).prefetch_related(
    Prefetch('minor_set', queryset=Minor.objects.filter(is_active=True).order_by('id'))
).order_by('id')
然后在模板中

{% for major in majors %}
    {% for minor in major.minor_set.all %}
        {{ forloop.counter }} {{ minor }}
    {% endif %}
{% endfor %}

你能把
专业
次要
模型和查询集添加到你的问题中吗?更改定义或迭代数据的方式可能会更容易,因为“重置”forloop计数器(如您所问)并非琐碎/可能会导致我的查询集。我还尝试在模板内添加{%with%}标记,但我认为我无法使用标记增加变量。您也可以添加模型吗?也添加了它…谢谢您的回复。我得到了一个错误
minor\u set'是一个在实现后预取\u related()
的无效参数。django指向major in majors。
minor
->
major
外键是否与您的问题中描述的完全相同?它没有
相关的\u名称
,因此反向关系必须命名为
minor\u set
?minor->Major ForeignKey yes。但是没有相关的名字。使用你的模型在本地运行测试对我来说很好。完整的错误消息是什么?它是否以
开头在主要对象上找不到“次要设置”