2

我已经构建了一个使用 django-tables2 来呈现表格数据的网站。我遇到了一个我无法解决的问题。

在某些表中,我verbose_name使用从数据库中提取的值构造一列:

setting = Setting.objects.get(site=Site.objects.get_current())
vol_unit = setting.volume_unit
base_vol_unit = Unit.objects.get(id=settings.BASE_VOLUME_UNIT)
total_vol = tables.Column(
    verbose_name="Total Volume (" + vol_unit.symbol + ")")

这很好用,直到用户更改他们的默认音量单位设置。在下一次服务器重新启动之前,它不会反映在表中。

我想我可以在表格的方法中插入一些东西__init__,但我无法弄清楚。

有任何想法吗?

非常感谢

弥敦道

4

1 回答 1

3

答案有点晚,但迟到总比没有好:)

这有点棘手,但是当你明白这一点时它并不难 - 你实际上不需要从 django-tables2 更改或继承任何东西,python 为你提供了你需要的所有工具 :)

因此,问题在于,如果您将字符串作为详细名称传递,则仅对其进行一次评估以找出其值,然后它只是一个静态字符串。你真正需要做的是传递一些可以作为字符串的东西,但每次都会重新评估它的值。

好吧,这只是一个具有__unicode__方法的普通类,例如:

导入日期时间
Foo类:
    def __unicode__(self):
        返回 unicode(datetime.datetime.now())

然后你可以在你的桌子上做类似的事情:

MyTable 类(tables.Table):
    koko = tables.Column(verbose_name=unicode(datetime.datetime.now()) )
    koko2 = tables.Column(verbose_name=Foo())

koko 列的标题将始终具有相同的值,但 koko2 的标题会在您每次刷新页面时更改!

蟒蛇FTW!

于 2013-04-27T21:39:27.063 回答