2014-03-02 101 views
0

在使用django-tables2應用程序時,如何獲得一個額外的列,它不與我的數據庫中的列對應,而是以某種方式從它們中計算出來。舉一個簡單的例子,假設我有模式:從其他列計算列django-tables2

#models.py 
class AddSub(models.Model) 

    num1 = models.DecimalField(max_digits=6, decimal_places=2) 
    num2 = models.DecimalField(max_digits=6, decimal_places=2) 
    op = models.CharField(max_length=3) 

所以我的模型基本上是三列,前兩個是數第三個是要執行的操作,無論是「子」,「添加」。例如:

num1 |num2| op 
1.01 5.67 'ADD' 
87.3 23.4 'SUB' 
. 
. 
. 

比方說,我想第四個欄,這三個在明顯的方式計算的,即它增加了兩個,如果op是「添加」,然後減去如果是「子」。

最後,我有我的表:

class CalcTable(tables.Table) 
    num1 = tables.Column(verbose_name='Operand 1') 
    num2 = tables.Column(verbose_name='Operand 2') 
    operation = tables.Column(verbose_name='Operation') 
    result = tables.Column(verbose_name='The Result') 

我怎樣才能得到django-tables2來填充我的結果列?是否通過render?也許類似

def render_result(self, value, record): 
    #add up 

但我在這方面的嘗試失敗了。事實上,即使返回一個常數return 3.0,只需將第四列留空即可。

回答

1

如果添加新列並使用render方法填充列,則需要在定義列時添加empty_values屬性。

result = tables.Column(verbose_name='The Result', empty_values=()) 

Relevant Doc