如何在django tables2 render_*中使用super



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 '---'

最新更新