3

我有一个看起来像这样的 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)

但是表格有一列破折号而不是我的数据,我应该改变什么?

4

2 回答 2

4

这就是我最终要做的:

在我的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 %}
于 2013-02-13T14:53:41.357 回答
1

我不熟悉这个 django-tables 应用程序,但如果您的目标是简单地在表格中显示您的数据,我会这样做:

  1. 你的数据结构太复杂了。只需创建一个元组列表并将其作为模板上下文返回。

    >>> 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)]
    
  2. 在您的模板中,您可以执行以下操作:

    <table> 
    {% for i, j in nob %}
        <tr>
            <td>{{ i }}</td>
            <td>{{ j }}</td>
        </tr>
    {% endfor %}
    </table>
    

这会为 中的每个条目在表中创建一个包含两个单元格的行nob。现在您可能会明白为什么在这里使用集合列表不是一个好主意。集合不保留元素的顺序,即{{ i }}有时会从列表中获取a,有时从列表中获取,b而您希望{{ i }}始终从列表中获取a并且{{ j }}始终从列表中获取b

于 2013-02-13T11:14:18.283 回答