使用Django生成复杂表

时间:2014-06-13 11:01:02

标签: python django django-templates

虽然使用django生成简单的表非常简单,但我似乎无法弄清楚如何生成复杂的表。

目前我的表格是用

呈现的
<table class="table-striped table">
    {% for row in table %}
    <tr>
        {% for item in row %}
        <td>{{ item }}</td>
            {% endfor %}
    </tr>
    {% endfor %}
</table>

这适用于二维数组,以插入表变量的方式布局数据

然而,生成复杂的表格让我很难过。假设我想打印一个表格,其中包含一个字符串和一个日期时间,以及一个字符串和对象列表。

table = [
   ["value/key", Datetime]
   ["value 1", [Object, Object, Object]]
]

对象是需要特定解析的对象。

the table that is currently generated

我需要列表内部可循环,而不是将其格式化为列表符号,而其他对象不会改变外观。

1 个答案:

答案 0 :(得分:1)

您可以创建一个new template filter来获取值并呈现字符串,或者如果它是一个列表,它将呈现列表中的每个项目。

# custom_filters.py
@register.filter(name='string_or_list')
def string_or_list(value, delimiter='\n'):
    """Renders string or each instance of a list with given delimiter."""
    if isinstance(value, list):
        return delimiter.join(value)
    return value

然后在你的模板中:

{% load custom_filters %}
<table class="table-striped table">
    {% for row in table %}
    <tr>
        {% for item in row %}
            <td>{{ item|string_or_list }}</td>
        {% endfor %}
    </tr>
    {% endfor %}
</table>