通过 Django 模板中的列表字典进行处理

Posted

技术标签:

【中文标题】通过 Django 模板中的列表字典进行处理【英文标题】:processing through a dictionary of lists in a Django template 【发布时间】:2014-08-09 08:01:30 【问题描述】:

我有一个如下所示的字典:list = item : [thing, thing, thing, thing], item : [thing, thing]

我目前正在尝试显示所有项目和类似的东西:

Item

    thing
    thing
    thing

Item

    thing
    thing

我试过了

% for item, things in list %
    -Item
    % for thing in things %
        thing
    % endfor %
% endfor %

但我的输出看起来有点像

-

-

-

-

-

我之前尝试过

% for item in list %
    -item
    % for thing in list[item] %
        thing
    % endfor %
% endfor %

这根本不起作用。

【问题讨论】:

【参考方案1】:

您应该使用list.items 来指定您要遍历 (key, value) 元组而不是键(就像您在 Python 代码中所做的那样)。

如果您希望输出更具可读性,您还必须包含一些换行符。

这样的事情应该可以工作:

% for item_name, things in list.items %
    -item_name<br />
    % for thing in things %
        thing<br />
    % endfor %
% endfor %

【讨论】:

正是我想要的,谢谢!一个问题。 item 有一个字段,它是模型 x 的 MTM。模型 x 有一个属性名称。 item.x.name 没有出现的任何原因? item.x.name 表示您访问item 上的字段x。如果字段x 是模型的m2m,但它实际上是ManyRelatedManager 并且不代表相关的模型实例(它在任何地方都没有意义,因为您可以有多个关联的对象)。 啊!这绝对是有道理的,我没有考虑过。

以上是关于通过 Django 模板中的列表字典进行处理的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板中访问字典列表

字典值无法通过在django模板中使用相应的键进行迭代[重复]

如何访问 Django 模板列表中的字典?

Django模板按索引获取字典列表中的元素

将带有对象列表的字典作为 django 中的值呈现,但模板不显示值

Django迭代列表中的字典并在模板中显示数据