如何在 django tables2 render_* 中使用 super
how use super in django tables2 render_*
我创建新列并添加自定义呈现如下
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()
指的是它所在的 class,即 MyTable(tables.Table)
class,而不是预期的 PriceColumn(Column)
class.
您可以通过以下两种方式之一修复,直接调用 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 '---'
我创建新列并添加自定义呈现如下
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()
指的是它所在的 class,即 MyTable(tables.Table)
class,而不是预期的 PriceColumn(Column)
class.
您可以通过以下两种方式之一修复,直接调用 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 '---'