i创建新的Column并添加自定义渲染,如下所示
class PriceColumn(django_tables2.Column):
def render(self, value):
if isinstance(value, int) or isinstance(value, float):
self.attrs['td']['title'] = f'{round(value, 2):,}'
return number_convertor_to_milion(value)
return '---
然后我把它用于现场
weekly_returns = PriceColumn(verbose_name=_('Weekly Returns'))
def render_weekly_returns(self, value,**kwargs):
final_result = value*100
// i want to call super().render() like below
return super().render(final_result,**kwargs)
我想像写代码一样调用super
,但给出错误
AttributeError: 'super' object has no attribute 'render'
怎么能做到这一点?
在您的案例中,super()
指的是它所在的类,即MyTable(tables.Table)
类,而不是预期的PriceColumn(Column)
类。
您可以修复以下两种方法之一:直接调用Class方法;
def render_weekly_returns(self, value,**kwargs):
final_result = value*100
return PriceColumn.render(final_result,**kwargs)
或者我可能建议将return方法指令添加到render_weekly_returns()
方法中,因为它将来更容易阅读。
def render_weekly_returns(self, value,**kwargs):
final_result = value*100
if isinstance(final_result, int) or isinstance(final_result, float):
self.attrs['td']['title'] = f'{round(final_result, 2):,}'
return number_convertor_to_milion(final_result)
return '---'