3

我在 django-tables2 表中有一个 TemplateColumn,我想使用自定义模板过滤器(名为 int_to_time)来转换数据。当我使用内置过滤器时,它工作正常。

到目前为止,我所做的是将模板\django_tables2\table.html 从 django-tables2 复制到我的项目中,并将我的标签库包含到 table.html 中。

但是,当我尝试渲染视图时,出现以下错误:

/details_show/2012/3/13/2 处的 TemplateSyntaxError
过滤器无效:“int_to_time”

错误似乎在 table.html 的第 28 行

{% for column, cell in row.items %}

我可以确认我的标签库正在加载,因为例如,如果我将标签库的名称写错了,那么我会得到一个找不到模板库的错误。

请帮忙 !

4

1 回答 1

9

最简单的解决方案

TemplateColumn在模板外部呈现列。您在模板中加载的任何自定义过滤器或标签都将不可用。

您应该能够在定义TemplateColumn. 就像是:

name1 = tables.TemplateColumn('{% load my_filters %}{{ record.name|int_to_time }}')

替代方案(布拉德利在评论中建议)

而不是TemplateColumn在定义表的类中使用。使用 a ,但使用格式Column定义方法。render_columnname()就像是:

from myfilters import int_to_time

class MyTable(tables.Table):
    time = tables.Column()

    def render_time(self, value):
        return int_to_time(value)

有关详细信息,请参阅Table.render_FOO() 方法

于 2012-05-29T00:17:32.603 回答