python - example - Django: anula el contenido de datos de una LinkColumn django-tables2
django-tables2 example (2)
Algo así debería estar funcionando ( advirtiendo que no tengo Python aquí, así que no está probado, pero entenderás):
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)
Y luego puedes usarlo como
id = CustomTextLinkColumn(''downloadFile'', args=[A(''pk'')], custom_text=''Export'', verbose_name=''Export'', )
Por supuesto, siempre puedes usar TemplateColumn o agregar un método render_id a tu FilesTable pero definitivamente CustomTextLinkColumn es el método más DRY :)
Yo uso django-tables2 LinkColumn para crear una columna que llame a una función que permita la exportación del objeto en la tabla.
forms.py:
class FilesTable(tables.Table):
id = tables.LinkColumn(''downloadFile'', args=[A(''pk'')], verbose_name=''Export'')
Me gustaría que el contenido de esta columna sea la función href para descargar el archivo con: Exportar como el texto, no el ID.
No puedo comentar, así que necesito agregar otra respuesta. Corregiré que la invocación "render" no debe tener "self" en la lista de parámetros.
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.custom_text if self.custom_text else value,
record, bound_column)
Use, como dice Serafeim:
id = CustomTextLinkColumn(''downloadFile'', args=[A(''pk'')],
custom_text=''Export'', verbose_name=''Export'', )