在使用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
返回一个常量,也只是将我的第四列留空了。
答案 0 :(得分:2)
如果添加新列并使用render
方法填充列,则需要在定义列时添加empty_values
属性。
result = tables.Column(verbose_name='The Result', empty_values=())