使用Django

时间:2017-03-10 22:56:56

标签: django nested-lists openpyxl

我有一个复杂的嵌套模型列表,如下所示:

hierarchy_tree =  ['0000', 'hierarchy' [['0000-22', 'hierarchy2', [['0000-33', 'hiearchy3', [['0000-44-4444', 'hiearchy4', [['0000-55-5555-55', 'hiearchy5', []]]]]]]]]]

我可以使用点表示法轻松地在模板中显示它 - 例如:

{% for hierarchy in hierarchy_tree %}
            <tr class="item" data-id="{{system.0}}" data-parent="">
                <td>
                    {{hierarchy.0}}
                </td>
                <td>
                    {{hierarchy.1.genericname}}
                </td>

现在我正在尝试将此输出到.xlsx文件但我无法弄清楚如何通过此列表的所有级别?如何在模板中执行与将此列表传递给excel相同的操作?

我已经尝试过以下方法,它将返回第一个列表,但是因为这样的方式会抛出一个错误(ValueError at / post / 1 / export / hierarchy / - 不能隐藏(我的传入列表)到excel)我相信它们是嵌套的。

for r in hierarchy_tree:
    ws.append(r)

我也尝试过多次尝试使用其他方法访问子列表。

所以底线我需要弄清楚如何访问和传递子列表的值 - 任何想法或帮助将不胜感激?

谢谢

1 个答案:

答案 0 :(得分:1)

  

评论: ...只是列表中的一行...

Python print 一行中的list类型的实例,与 [...] 一致。
您的hierarchy_tree属于列表中的n个列表 list中的每个 hierarchy_tree都以 [开头,以] 结尾。

您必须将hierarchy_tree分成行数据。 例如:

def treeWalk(tree, level=0):
    rData = [ '' for i in range(level)]
    for item in tree:
        if isinstance(item, list):
            if len(rData) > level:
                ws.append(rData)
                level += 1

            treeWalk(item, level)
            return
        rData.append(item)

treeWalk(hierarchy_tree)  

使用Python测试:3.4.2 - openpyxl:2.4.1 - LibreOffice:4.3.3.2