3

django-tables2テーブルにTemplateColumnがあり、カスタムテンプレートフィルター(int_to_timeという名前)を使用してデータを変換したいと思います。内蔵フィルターを使用すると正常に動作します。

これまでに行ったことは、templates \ django_tables2 \ table.htmlをdjango-tables2からプロジェクトにコピーし、タグライブラリをtable.htmlに含めたことです。

ただし、ビューをレンダリングしようとすると、次のエラーが発生します。

/ details_show/2012/3/13/2のTemplateSyntaxError
無効なフィルター:'int_to_time'

エラーはtable.htmlの28行目にあるようです

{列の%、行のセル.items%}

たとえば、タグライブラリの名前を間違って書き込んだ場合、テンプレートライブラリが見つからないというエラーが発生するため、タグライブラリが読み込まれていることを確認できます。

助けてください !

4

1 に答える 1

9

最も簡単な解決策

TemplateColumn列をテンプレートの外部にレンダリングします。テンプレートにロードしたカスタム フィルターやタグは使用できません。

を定義するときに、カスタム フィルタをロードできるはずですTemplateColumn。何かのようなもの:

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

代替(コメントでBradleyが提案)

TemplateColumnテーブルを定義するクラスで使用する代わりに。を使用しますが、フォーマットを使用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 に答える