跟踪django for循环中的变量值并避免重复

Keeping track of variable values in django for loop and avoid duplicates

我有一个 for 循环,它对不同的对象有许多相同的值。我试图仅跟踪唯一值。

`{% with cla.lodge_name|stringformat:"s" as hotel_stayed %}
 {% if hotel_stayed not in unique_hotel_list %}<!-- How to do this?? in django template -->
    {% for lodge in lodges %}
    {% if lodge.lodge_name == hotel_stayed %}
        <div>....</div>
       `

我在创建可以附加值的列表时遇到问题,以便我可以检查 unique_hotel_list 中是否已经存在新值。我还尝试制作一个以名称为键,以值为计数的字典。如果计数大于 1,则无需继续。还查看了过滤器标签,但未能成功。

非常感谢您的帮助!

我强烈建议在 python 视图代码中执行此操作。

但是,如果您真的需要在模板中执行此操作,那么我能想到的相对简单的唯一方法是为所有酒店创建 html 并添加一个 "hidden" 标记到 unique_hotel_list 中的标记。所以你的 div 可以看起来像:

<div
{% for hotel in unique_hotel_list %}
   {% ifequal hotel hotel_stayed %}
     hidden
   {% endifequal %}
{% endfor %}
>
</div>

这感觉就像你在要求 Y,而你的问题实际上是 X。

意思是:首先为什么你的列表中有重复项?它们 "valid" 并且您在其他地方需要它们吗?或者你真的需要一个没有重复的列表,但可能需要一个计数或分组(也称为聚合)。

我怀疑您正在对 Django 的 ORM 进行查询,该查询执行的连接会导致重复的行。如果您提供创建该列表的初始 Django 代码,您可能会得到原始问题的正确答案。

无论如何,这都足够复杂,可以在 Django 视图中完成。 代替(或附加)原始列表,将修改后的列表添加到模板上下文中。或者创建最适合您的标记需要的数据结构。