虽然使用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]]
]
对象是需要特定解析的对象。
我需要列表内部可循环,而不是将其格式化为列表符号,而其他对象不会改变外观。
答案 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>