如何将LinkColumn格式化为DateTimeColumn

时间:2013-10-24 12:41:50

标签: django django-tables2

我有一个模型:

start_time = models.DateTimeField()
end_time = models.DateTimeField()

我使用过django-tables2,它们都采用友好的短日期时间格式。

现在我使用以下命令将表类中的start_time更改为链接:

start_time = tables.LinkColumn('desturl', args[A('pk')])

它现在被格式化为具有时区数据的较长的不友好日期。

是否有将LinkColumn和DateTimeColumn用于格式化?我无法在文档中发现任何内容。

2 个答案:

答案 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的所有可选参数 - 添加回您需要的内容。