我有一个dict列表,如下所示:
[set([u'meal', '0:08:35.882945']),
set([0, u'personal']),
set([0, u'sleep']),
set([0, u'transport']),
set([0, u'work'])]
我从:
[u'meal',u'personal', u'sleep', u'transport', u'work']
['0:08:35.882945', 0, 0, 0, 0]
使用此命令:
nob = [{m,n} for m,n in zip(cats,tot3)]
如何将其转换为django-tables2表格?
我试过了:
# tables.py
class Small_table (tables.Table):
category = tables.Column(verbose_name="category")
class Meta:
attrs = {"class": "paleblue"}
# views.py
nt = Small_table(nob)
RequestConfig(request).configure(nt)
但是这个表有一列破折号而不是我的数据,我应该改变什么?
答案 0 :(得分:2)
这就是我最终做的事情:
在我的tables.py中:
class Small_table (tables.Table):
name = tables.Column(verbose_name="category",order_by="name")
tot = tables.Column(orderable=False)
class Meta:
attrs = {"class": "paleblue"}
在我看来
from .tables import Small_table
from django_tables2 import RequestConfig
nob = [{"name":m,"tot":n} for m,n in zip(cats,tot3)]
nt = Small_table(nob)
RequestConfig(request).configure(nt)
return render(request, "job/job_home.html", { "small":nt })
并在模板中:
{% load render_table from django_tables2 %}
<link rel="stylesheet" href="{{ STATIC_URL }}django_tables2/themes/paleblue
{% render_table small %}
答案 1 :(得分:1)
我不熟悉这个django-tables应用程序,但如果你的目标只是在表格中显示数据,我会这样做:
您的数据结构太复杂了。只需创建一个元组列表并将其作为模板上下文返回。
>>> a = [u'meal', u'personal', u'sleep', u'transport', u'work']
>>> b = ['0:08:35.882945', 0, 0, 0, 0]
>>> nob = zip(a, b)
>>> nob
[(u'meal', '0:08:35.882945'),
(u'personal', 0),
(u'sleep', 0),
(u'transport', 0),
(u'work', 0)]
在您的模板中,您可以执行以下操作:
<table>
{% for i, j in nob %}
<tr>
<td>{{ i }}</td>
<td>{{ j }}</td>
</tr>
{% endfor %}
</table>
这会在表格中为nob
中的每个条目创建一个包含两个单元格的行。现在你可能会看到为什么集合列表在这里不是一个好主意。集合不保留元素的顺序,即{{ i }}
有时可以从列表a
中获取,有时也可以从列表b
获取,而您希望始终从列表中获取{{ i }}
始终从列表a
中获取{{ j }}
和b
。