从其他列django-tables2计算列

时间:2014-03-02 19:42:40

标签: python django django-tables2

在使用django-tables2 app时,如何获得一个额外的列,它与我的数据库中的列不对应,而是以某种方式从它们计算出来。举个简单的例子,假设我有模型:

#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)

所以我的模型基本上是三列,前两个是数字,第三个是要执行的操作,'SUB','ADD'。例如:

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

假设我想要第四列,从这三个列中以明显的方式计算,即如果op是'ADD'则添加两个,如果是'SUB'则减去。

最后,我有我的桌子:

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 个答案:

答案 0 :(得分:2)

如果添加新列并使用render方法填充列,则需要在定义列时添加empty_values属性。

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

Relevant Doc