【发布时间】:2022-01-12 09:07:48
【问题描述】:
我正在寻找一个不错的解决方案,基于 django-tables2 为我的表创建一个简单的子类 NumericColumn。我从那个开始:
class NumericColumn(Column):
def render(self, value):
return '{:0,.2f}'.format(value)
在我决定将负值变为红色之前效果很好:
class NumericColumn(Column):
attrs = {
'td': {
'class': lambda value: 'text-danger' if value < 0 else ''
}
}
def render(self, value):
return '{:0,.2f}'.format(value)
代码周期性地因TypeError: '<' not supported between instances of 'str' and 'int' 而失败,并且似乎 lambda 函数接收到已格式化的value。我看不到通过访问器在record 中获取原始值的方法,并且我认为将反向转换为 Decimal 进行此类比较并不好。好的,我可以测试'-'的第一个字符,但它太丑了。
请帮忙。
【问题讨论】:
-
你的方法定义看起来不错,但它是如何使用的呢?看起来问题来自代码的另一部分。你确定
value实际上总是int吗?这是什么record? -
我认为问题在于
value似乎来到了已经由render方法格式化的lambda函数,如果我尝试将value转换为int或Decimal,我收到这样的错误:could not convert string to float: '1,750.40'
标签: python django django-tables2