Как использовать super в 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
как в написанном коде, но выдает ошибку
как это можно сделать?
В вашем случае super()
относится к классу, в котором он находится, а это класс MyTable(tables.Table)
, а не предполагаемый класс PriceColumn(Column)
.
Вы можете исправить одним из 2 способов, вызвать метод класса напрямую;
def render_weekly_returns(self, value,**kwargs):
final_result = value*100
return PriceColumn.render(final_result,**kwargs)
или я бы, вероятно, рекомендовал просто добавить инструкции метода возврата в ваш метод 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 '---'