从其他列计算一个列 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)
我的模型基本上有三列,前两列是数字,第三列是要执行的操作,可以是 'SUB'(减法)或者 'ADD'(加法)。比如:
num1 |num2| op
1.01 5.67 'ADD'
87.3 23.4 'SUB'
.
.
.
假设我想要一个第四列,这一列是根据前面三列计算出来的,简单来说,如果操作是 '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 个回答
3
如果你添加了一个新列,并且使用 render
方法来填充这个列的数据,那么在定义这个列的时候,你需要加上 empty_values
属性。
result = tables.Column(verbose_name='The Result', empty_values=())