我有一个有价格栏的模型。使用ModelView,我希望价格列与两个小数位和一个货币符号右对齐。如何更改价格列的格式?
发布于 2015-07-25 09:19:13
将flask-appbuilder升级到1.4.4,并使用新的@renders装饰器来完成以下操作:
可以在列表上使用自定义模型属性。这对于格式化诸如货币、时间或日期之类的值非常有用。或者用于自定义HTML。这非常简单,首先在您的Model上定义您的自定义属性,并使用@renders修饰器告诉框架将您的类方法映射到某个Model属性:
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上的列进行引用:
class MyModelView(ModelView):
datamodel = SQLAInterface(MyTable)
list_columns = ['name', 'my_custom']发布于 2021-07-20 13:21:33
如果您不想在model.py中包含与装饰相关的代码。下面是一个很好的选择。
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即可。
在此之前
<td>{{ formatter(item[value])}}编辑后
<td>{{ formatter(item[value]) |safe }}https://stackoverflow.com/questions/31592869
复制相似问题