首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Flask-Appbuilder中格式化货币列?

如何在Flask-Appbuilder中格式化货币列?
EN

Stack Overflow用户
提问于 2015-07-24 00:18:13
回答 2查看 770关注 0票数 0

我有一个有价格栏的模型。使用ModelView,我希望价格列与两个小数位和一个货币符号右对齐。如何更改价格列的格式?

EN

回答 2

Stack Overflow用户

发布于 2015-07-25 09:19:13

将flask-appbuilder升级到1.4.4,并使用新的@renders装饰器来完成以下操作:

可以在列表上使用自定义模型属性。这对于格式化诸如货币、时间或日期之类的值非常有用。或者用于自定义HTML。这非常简单,首先在您的Model上定义您的自定义属性,并使用@renders修饰器告诉框架将您的类方法映射到某个Model属性:

代码语言:javascript
复制
from flask.ext.appbuilder.models.decorators import renders

class MyModel(Model):
    id = Column(Integer, primary_key=True)
    name = Column(String(50), unique = True, nullable=False)
    custom = Column(Integer(20))

    @renders('custom')
    def my_custom(self):
        # will render this columns as bold on ListWidget
        return Markup('<b>' + custom + '</b>')

在您的视图上,将您的方法作为list上的列进行引用:

代码语言:javascript
复制
class MyModelView(ModelView):
    datamodel = SQLAInterface(MyTable)
    list_columns = ['name', 'my_custom']
票数 1
EN

Stack Overflow用户

发布于 2021-07-20 13:21:33

如果您不想在model.py中包含与装饰相关的代码。下面是一个很好的选择。

代码语言:javascript
复制
class FormattedListWidget(ListWidget):
    template = 'widgets/my_list.html'

class MyModelView(ModelView):
    datamodel = SQLAInterface(MyTable)
    list_widget = FormattedListWidget
    list_columns = ['my_dirthday']
    formatters_columns={'my_dirthday':lambda x:'<b>'+x.strftime('%Y.%m.%d')+'</b>'}

来自~/flask_appbuilder/templates/appbuilder/general/widgets/list.html的my_list.html

它必须位于您的/template/widgets目录中。只需按如下方式编辑my_list.html即可。

在此之前

代码语言:javascript
复制
<td>{{ formatter(item[value])}}

编辑后

代码语言:javascript
复制
<td>{{ formatter(item[value]) |safe }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31592869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档