【问题标题】:Loop through a defaultdict(list) structure in a django template循环遍历 django 模板中的 defaultdict(list) 结构
【发布时间】:2015-12-25 01:34:51
【问题描述】:

我有一个这样的结构my_dict

defaultdict(<class 'list'>, {
   <MyClass: myobject1>: [<ThingClass: mything1>, <ThingClass: mything2>, ...],
   <MyClass: myobject2>: [<ThingClass: mything6>, <ThingClass: mything7>, ...], 
   <MyClass: myobject3>: [<ThingClass: mything45>, <ThingClass: mything46>, ...],
   ...
})

我想像这样遍历对象:

{% for object in my_dict %}
    {{object.somefield}}    
      {% for thing in object %}
          {{thing.somefield}}
      {% endfor %}
  {% endfor %}

如何循环遍历这个嵌套循环中的内容? myobject1 不可迭代,那么如何获取可迭代?

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    您应该遍历字典的.items() 以在每次迭代时同时获取对象和列表:

    {% for obj, things in my_dict.items %}
        {{obj.somefield}}
    
        {% for thing in things %}
            {{thing.somefield}}
        {% endfor %}
    
    {% endfor %}
    

    【讨论】:

    • 谢谢。如果我在上下文中传递my_dict 并尝试在模板中获取my_dict.items,它会失败:{{my_dict.items}} = [] 但我尝试在上下文中传递my_dict.items(),它有效吗?!我不明白。
    • 我认为不可能。 stackoverflow.com/questions/8018973/…我无法制作更多的 cmets,因为我不知道您在模板和视图中还做了什么。
    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 2013-05-13
    • 2016-08-31
    • 2012-12-25
    • 2011-11-10
    • 2020-08-03
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多