Как использовать 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 '---'
Вернуться на верх