【问题标题】:Keeping track of variable values in django for loop and avoid duplicates在 django for 循环中跟踪变量值并避免重复
【发布时间】:2016-07-20 19:38:32
【问题描述】:

我有一个 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,则无需继续。还查看了过滤器标签,但未能成功。

非常感谢您的帮助!

【问题讨论】:

    标签: django filter tags django-templates


    【解决方案1】:

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

    但是,如果您确实需要在模板中执行此操作,那么我能想到的相对简单的唯一方法是为所有酒店创建 html 并在其中添加“隐藏”标签在 unique_hotel_list 中。所以你的 div 看起来像:

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

    【讨论】:

    • 经过一番思考,我基本上做了我在模板视图中所做的一切。因此,我在模板中没有遇到任何问题。我制作了一个 unique_hotel_list 并将其传递给模板。它确实像我最初想要的那样工作!谢谢!
    【解决方案2】:

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

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

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

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

    【讨论】:

    • @Rishdinha,我正在寻找的两种类型的对象具有多对多关系。因此,不同课程的价值(酒店)相同,反之亦然。
    • for 循环用于查找与给定酒店一起使用的其他酒店。因此,我必须查看使用给定酒店的所有课程以及该课程中的所有其他酒店。由于酒店可以被许多课程使用,因此存在重复。到目前为止,在模板中,我可以找到与给定酒店一起使用的所有酒店,如果一家酒店被超过 1 门课程使用,它将显示更多次。感谢指导。
    猜你喜欢
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2012-10-24
    • 2018-03-15
    • 1970-01-01
    相关资源
    最近更新 更多