我不知道标题是否不清楚,但我会在这里解释一下。首先是一些前言 - 我要做的是显示丢失具有相同属性的对象,并且我希望根据另一个属性对它们进行分组。
然而,可能有一些对象具有第一个属性而不是第二个属性,因此我不想显示该属性的名称。也许这个模板片段会让它更清晰。它仅包含inner two loops
{% for attr2 in attr2_list %}
<li class='category'> {{ attr1.attr1 }}
<ul>
{% set counter = 0 %}
{% for object in object_list %}
{% if object.attr1 == attr1.attr1 and object.attr2 = attr2.attr2 %}
{% increment counter %}
<li><a href="{{ object.get_absolute_url }}"> Test {{counter}} </a></li>
{% endif %}
{% endfor %}
</ul>
</li>
{% endfor %}
我想要的是,如果特定attr2
的for循环不满意,那么我不想显示此<li class='category'> {{ attr1.attr1 }}
我希望我已经说清楚了。感谢您的帮助
答案 0 :(得分:2)
你正试图在你的模板中进行一场失败的战斗:在这里,最接近解决方案的是regroup
tag,但这并不是你寻找和依赖的方式。关于首先在分组属性上排序的项目。
在您看来,您可能想要这样的内容:
grouped = {}
for obj in object_list:
grouped.setdefault(obj.attr1, {}).setdefault(obj.attr2, []).append(obj)
这应该为您提供一个字典,其中键的值为attr1
,值为字典,从attr2
的值映射到具有这些属性的项目列表。
答案 1 :(得分:1)
这种逻辑更恰当地放在视图中而不是模板中。您可以在视图中非常轻松地过滤这些对象,然后仅将符合条件的对象作为上下文中的命名值传递。我会给你一些代码,但我不知道你正在使用什么数据。