我有一个模型:
start_time = models.DateTimeField()
end_time = models.DateTimeField()
我使用过django-tables2,它们都采用友好的短日期时间格式。
现在我使用以下命令将表类中的start_time更改为链接:
start_time = tables.LinkColumn('desturl', args[A('pk')])
它现在被格式化为具有时区数据的较长的不友好日期。
是否有将LinkColumn和DateTimeColumn用于格式化?我无法在文档中发现任何内容。
答案 0 :(得分:0)
如果要将数据格式化为URL,请将该列保留为日期字段,并使用render_foo method将日期显示为URL,例如:
render_start_time(self,value):
mark_safe('<a href="some_url">%s</a>' % value)
希望这有帮助,
大卫
答案 1 :(得分:0)
由于这是您可能希望在表和字段之间重用的内容,因此自定义列是个好主意。例如,子类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")
我已经硬编码了该字段,因为我的所有模型都使用它,但你可以轻松地将其更改为“pk”或将其添加为参数。同样,此处缺少您可以传递给LinkColumn的所有可选参数 - 添加回您需要的内容。