0

我想更改在烧瓶管理员中向我显示日期的默认方式,为其提供特定的时区并以更易于阅读的格式显示。

有很多方法可以解决这个问题(过滤器__html__、、、、__str__Babel 等),但是虽然这些方法可行,但我的问题是是否有更通用的方法来解决更普遍的问题。格式化日期的具体问题只是一个例子。

在我的场景中,我无法控制日期对象——我不能子类化它或monkeypatch a __str__or__html__方法。我希望它对模板中的所有日期自动发生,并且我不想编写自定义管理模板,并且我不想在我的模板中为这种情况使用显式过滤器。

我理想的解决方案是以某种方式为 Jinja 指定一个默认过滤器,以便所有数据在呈现之前都通过该过滤器。我可以自己编写过滤器,但我不知道如何让 Jinja 使用它。

我的一个想法是以某种方式使用自动转义(请参阅this question),但我看不到任何方法可以在没有讨厌的猴子补丁的情况下覆盖 Jinja 的自动转义功能。

有任何想法吗?

4

2 回答 2

2

你不必猴子补丁任何东西。

您只需使用自定义格式化程序为您的模型视图创建一个自定义基类。类的一个例子date

from datetime import date
from flask_admin.model import typefmt


def date_format(view, value):
    return value.strftime('%d.%m.%Y')

MY_DEFAULT_FORMATTERS = dict(typefmt.BASE_FORMATTERS)
MY_DEFAULT_FORMATTERS.update({
    date: date_format,
})

class MyModelView(BaseModelView):
    column_type_formatters = MY_DEFAULT_FORMATTERS
于 2015-07-15T13:20:29.250 回答
1

如果你想在 Flask-Admin 相关代码中使用它,你可以依赖column_type_formatters.

https://flask-admin.readthedocs.org/en/latest/api/mod_model/#flask.ext.admin.model.BaseModelView.column_type_formatters

于 2014-03-04T16:25:14.220 回答