循环遍历 django 模板中的 defaultdict(list) 结构

Posted

技术标签:

【中文标题】循环遍历 django 模板中的 defaultdict(list) 结构【英文标题】:Loop through a defaultdict(list) structure in a django template 【发布时间】: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 不可迭代,那么如何获取可迭代?

【问题讨论】:

【参考方案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(),它有效吗?!我不明白。 我认为不可能。 ***.com/questions/8018973/…我无法制作更多的 cmets,因为我不知道您在模板和视图中还做了什么。

以上是关于循环遍历 django 模板中的 defaultdict(list) 结构的主要内容,如果未能解决你的问题,请参考以下文章

尝试遍历 django 模板中的嵌套字典

循环遍历 django 模板中的 defaultdict(list) 结构

使用模板标签循环遍历 django 中的对象不起作用

从字符串/django 对象获取 datepicker defaultdate

Django:遍历模板中的过滤列表

在 Django 模板中循环遍历 CSV 字符串