2013-04-07 72 views
2

我已經建立了一個網站,利用Django的tables2呈現表格數據。我遇到了一個我一直無法解決的問題。重新呈現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__方法,但我一直沒能螺母出來。

任何想法?

非常感謝

彌敦道

回答

3

晚了一點答案,但遲到總比不到好:)

這是一個有點棘手,但它並不難,當你的想法 - 你居然不要」噸需要更改或繼承任何從Django的tables2,Python提供您所需要:)

所以,問題是所有的工具,如果你傳遞一個字符串作爲冗長吶我只評估一次它的值,然後它只是一個靜態字符串。你真正需要做的是傳遞一些可以作爲字符串的東西,但是每次都會重新評估它的值。

好吧,這只是一個普通的類,有一個__unicode__方法,東西比如像這樣:

 
import datetime 
class 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 FTW!

+0

非常感謝!我不認爲從這個角度來看它。也明確解釋。 – 2013-04-30 00:52:13