由于这是您可能希望跨表和字段重用的内容,因此自定义列是一个好主意。例如,子类 DateTimeColumn 并通过调用 BaselinkColumn.render_link 添加链接:
from django_tables2.columns.linkcolumn import BaseLinkColumn
class LinkedDateTimeColumn(tables.DateTimeColumn):
def __init__(self, viewname, *args, **kwargs):
self.viewname = viewname
super(LinkedDateTimeColumn, self).__init__(*args, **kwargs)
def render(self, *args, **kwargs):
ts = super(LinkedDateTimeColumn, self).render(*args, **kwargs)
view = reverse(self.viewname, args=[kwargs["record"].slug])
return BaseLinkColumn().render_link(view, ts)
# in your tables
timestamp = LinkedDateTimeColumn('your_view_name', "d.m.Y H:i")
我已将用于查找 url 的字段硬编码为“slug”,因为我的所有模型都使用它,但您可以轻松地将其更改为“pk”或将其添加为参数。同样,您可以传递给LinkColumn的所有可选参数都在这里丢失 - 重新添加您需要的参数。