1

我有一个模型:

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

我使用了 django-tables2,它们都以友好的短日期时间格式进行格式化。

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

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

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

是否有同时使用 LinkColumn 和 DateTimeColumn 进行格式化?我在文档中找不到任何东西。

4

2 回答 2

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")

我已将用于查找 url 的字段硬编码为“slug”,因为我的所有模型都使用它,但您可以轻松地将其更改为“pk”或将其添加为参数。同样,您可以传递给LinkColumn的所有可选参数都在这里丢失 - 重新添加您需要的参数。

于 2014-12-07T22:18:33.180 回答
0

如果要将数据格式化为 URL,请将列保留为日期字段并使用render_foo 方法将日期呈现为 URL,例如:

render_start_time(self,value):
    mark_safe('<a href="some_url">%s</a>' % value)

希望这可以帮助,

大卫

于 2013-10-25T12:58:23.577 回答