django-tables2 导出自定义 URL 列
django-tables2 exporting custom URL column
大家好,
希望大家一切都好。
我有一个 table,我使用超链接自定义列呈现。
问题是当我导出到 CSV 时,它只给我超链接的文本,而不是超链接。
我想导出超链接而不仅仅是文本,这可能吗?
(如果我需要切换到 xlsx 导出也可以)
(更糟的是我只能让文本成为完整路径)
自定义列:
document_link = tables.TemplateColumn('<a href="{{record.document_file.url}}/" target="_blank">{{record.document_file}}</a>', verbose_name="Document location")
提前致谢,
我建议使用“包含和排除列”
https://django-tables2.readthedocs.io/en/latest/pages/export.html#including-and-excluding-columns
将 exclude_from_export=True
添加到 document_link
字段,以及一个不可见的 document_link_for_csv
字段。
class DocumentTable(tables.Table):
document_link = tables.TemplateColumn(
'<a href="{{record.document_file.url}}/"
target="_blank">{{record.document_file}}</a>',
verbose_name="Document location",
exclude_from_export=True
)
document_link_for_csv = columns.Column(
visible=False,
accessor="document_file__url"
)
根据评论更新:
您可以 ,然后进行自定义渲染和 request.build_absolute_uri()
。
class DocumentTable(tables.Table):
document_link = tables.Column(
verbose_name="Document location",
exclude_from_export=True
)
document_link_for_csv = columns.Column(
visible=False,
accessor="document_file__url"
)
def render_document_link_for_csv(self, value, record):
return format_html(
'<a href="{}/{}/" target="_blank">{}</a>,
request.build_absolute_uri(),
record.document_file.url,
record.document_file
)
这是我设法做到这一点的最后方法:
class DocumentTable(ExportMixin,tables.Table):
document_link = tables.TemplateColumn('<a href="{{record.document_file.url}}/" target="_blank">{{record.document_file}}</a>', verbose_name="Document location", exclude_from_export=True)
document_URL = tables.TemplateColumn('render_replaces_this',visible=False)
def render_document_URL(self, value, record):
return format_html(
'{}{}',
self.request.META['HTTP_HOST'],
record.document_file.url,
)
大家好,
希望大家一切都好。
我有一个 table,我使用超链接自定义列呈现。
问题是当我导出到 CSV 时,它只给我超链接的文本,而不是超链接。
我想导出超链接而不仅仅是文本,这可能吗? (如果我需要切换到 xlsx 导出也可以) (更糟的是我只能让文本成为完整路径)
自定义列:
document_link = tables.TemplateColumn('<a href="{{record.document_file.url}}/" target="_blank">{{record.document_file}}</a>', verbose_name="Document location")
提前致谢,
我建议使用“包含和排除列” https://django-tables2.readthedocs.io/en/latest/pages/export.html#including-and-excluding-columns
将 exclude_from_export=True
添加到 document_link
字段,以及一个不可见的 document_link_for_csv
字段。
class DocumentTable(tables.Table):
document_link = tables.TemplateColumn(
'<a href="{{record.document_file.url}}/"
target="_blank">{{record.document_file}}</a>',
verbose_name="Document location",
exclude_from_export=True
)
document_link_for_csv = columns.Column(
visible=False,
accessor="document_file__url"
)
根据评论更新:
您可以 request.build_absolute_uri()
。
class DocumentTable(tables.Table):
document_link = tables.Column(
verbose_name="Document location",
exclude_from_export=True
)
document_link_for_csv = columns.Column(
visible=False,
accessor="document_file__url"
)
def render_document_link_for_csv(self, value, record):
return format_html(
'<a href="{}/{}/" target="_blank">{}</a>,
request.build_absolute_uri(),
record.document_file.url,
record.document_file
)
这是我设法做到这一点的最后方法:
class DocumentTable(ExportMixin,tables.Table):
document_link = tables.TemplateColumn('<a href="{{record.document_file.url}}/" target="_blank">{{record.document_file}}</a>', verbose_name="Document location", exclude_from_export=True)
document_URL = tables.TemplateColumn('render_replaces_this',visible=False)
def render_document_URL(self, value, record):
return format_html(
'{}{}',
self.request.META['HTTP_HOST'],
record.document_file.url,
)