gpt4 book ai didi

python - 重新渲染 django-tables2 列标题

转载 作者:太空宇宙 更新时间:2023-11-04 01:28:24 26 4
gpt4 key购买 nike

我构建了一个网站,利用 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 + ")")

在用户更改其默认体积单位设置之前,这种方法效果很好。在下一次服务器重启之前,它不会反射(reflect)在表中。

我想我可以将一些东西插入到表的 __init__ 方法中,但我还没能把它弄清楚。

有什么想法吗?

非常感谢

内森

最佳答案

回答有点晚,但迟到总比不到好:)

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

所以,问题在于,如果您将一个字符串作为详细名称传递,它只会被评估一次以找出其值,然后它只是一个静态字符串。您真正需要做的是传递一些可以充当字符串但每次都会重新计算其值的东西。

嗯,这只是一个普通的类,它有一个 __unicode__ 方法,例如:

import datetimeclass Foo:    def __unicode__(self):        return unicode(datetime.datetime.now())

然后你可以在你的表中做类似的事情:

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

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

python !

关于python - 重新渲染 django-tables2 列标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859262/

26 4 0