Django - 覆盖 django-tables2 LinkColumn 的数据内容

Bel*_*dar 5 python django django-forms django-tables2

我使用 django-tables2 LinkColumn 创建一个列,该列调用允许导出表中对象的函数。

形式.py:

class FilesTable(tables.Table):
    id = tables.LinkColumn('downloadFile', args=[A('pk')], verbose_name='Export')
Run Code Online (Sandbox Code Playgroud)

我希望本专栏的内容是 downloadFile 函数的 href,其中:导出为文本,而不是 id。

Ser*_*eim 4

类似的东西应该可以工作(警告我这里没有Python,所以它没有经过测试,但你会明白的):

类 CustomTextLinkColumn(LinkColumn):
  def __init__(self, viewname, urlconf=None, args=None,
    kwargs=无、current_app=无、attrs=无、custom_text=无、**额外):
    super(CustomTextLinkColumn, self).__init__(viewname, urlconf=urlconf,
      args=args、kwargs=kwargs、current_app=current_app、attrs=attrs、**额外)
    self.custom_text = 自定义文本


  def render(自身,值,记录,bound_column):
    返回 super(CustomTextLinkColumn, self).render(self,
      self.custom_text 如果 self.custom_text 其他值,
      记录,绑定列)    

然后你可以像这样使用它

id = CustomTextLinkColumn('downloadFile', args=[A('pk')],
  custom_text='导出', verbose_name='导出', )

当然,您始终可以使用 TemplateColumn 或向 FilesTable 添加 render_id 方法,但 CustomTextLinkColumn 绝对是最干燥的方法:)