我使用
django-tables2 LinkColumn创建一个列,该列调用一个允许导出表中对象的函数.
forms.py:
class FilesTable(tables.Table):
id = tables.LinkColumn('downloadFile', args=[A('pk')], verbose_name='Export')
我希望这个列的内容是下载文件功能的href:导出为文本,而不是id.
最佳答案 这样的东西应该工作(警告我这里没有Python所以它没有经过测试,但你会得到这个想法):
class CustomTextLinkColumn(LinkColumn): def __init__(self, viewname, urlconf=None, args=None, kwargs=None, current_app=None, attrs=None, custom_text=None, **extra): super(CustomTextLinkColumn, self).__init__(viewname, urlconf=urlconf, args=args, kwargs=kwargs, current_app=current_app, attrs=attrs, **extra) self.custom_text = custom_text def render(self, value, record, bound_column): return super(CustomTextLinkColumn, self).render(self, self.custom_text if self.custom_text else value, record, bound_column)
然后你可以像使用它一样
id = CustomTextLinkColumn('downloadFile', args=[A('pk')], custom_text='Export', verbose_name='Export', )
当然你总是可以使用TemplateColumn或者向你的FilesTable添加一个render_id方法,但是CustomTextLinkColumn绝对是最干的方法:)