python - Flask-Admin字段(列)格式化(column_formatters)

本文介绍如何在Flask-Admin中使用列格式化功能来改变模型属性的显示方式,例如显示简化日期或计算属性值。通过定义格式化器函数或在Jinja2模板中使用宏,可以实现对特定字段的自定义展示。

Flask-Admin字段(列)格式化

在某些情况下,我们需要对模型的某个属性进行格式化。比如,默认情况下,日期时间显示出来会比较长,这时可能需要只显示月和日,这时候,列格式化就派上用场了。

比如,如果你要显示双倍的价格,你可以这样做:

class MyModelView(BaseModelView):
    column_formatters = dict(price=lambda v, c, m, p: m.price*2)

或者在Jinja2模板中使用宏:

from flask.ext.admin.model.template import macro

class MyModelView(BaseModelView):
    column_formatters = dict(price=macro('render_price'))

# in template
{% macro render_price(model, column) %}
    {{ model.price * 2 }}
{% endmacro %}

回调函数模型:

def formatter(view, context, model, name):
    # `view` is current administrative view
    # `context` is instance of jinja2.runtime.Context
    # `model` is model instance
    # `name` is property name
    pass

正好和上面的vcmp相对应。


原文:http://flask123.sinaapp.com/article/58/

### 关于FlatAdmin、FlatCommon、FlatAPI和FlatQR的技术信息 #### FlatAdmin FlatAdmin 是一种多布局扁平化管理应用程序模板,专为简化Web应用开发而设计。该框架提供了丰富的组件库和支持多种页面布局的选择,使得开发者能够快速构建美观且功能强大的后台管理系统[^1]。 对于Flask-Admin中遇到的对象关系映射(ORM)字段显示问题,当展示的是关联表的数据时,默认会显示出对象的内存地址而不是实际的内容。解决这一情况可以通过自定义模型视图中的`column_formatters`属性来指定如何渲染特定类型的,从而让其按照预期的方式呈现数据而非简单的对象引用[^2]。 ```python from flask_admin.contrib.sqla import ModelView class MyModelView(ModelView): column_formatters = { 'related_column': lambda v, c, m, p: str(m.related_object) if m.related_object else '' } ``` #### FlatCommon 虽然没有直接提及名为“FlatCommon”的具体产品或库的信息,但从命名推测这可能是指一组通用样式或者工具函数集合,用于支持其他模块如FlatAdmin的一致性和便捷操作。这类资源通常包含了CSS样式文件以及JavaScript脚本片段,旨在提供一致性的用户体验并减少重复编码的工作量[^3]。 #### FlatAPI FlatAPI可能是指一套RESTful API的设计指南或者是某个项目内部使用的API接口层实现方式。它应该遵循REST架构风格的原则,通过HTTP协议进行通信,并采用JSON作为消息格式交换数据。为了更好地理解具体的使用方法和技术细节,建议查阅相关项目的官方文档或是源码仓库里的README.md文件获取最准确的第一手资料[^4]。 #### FlatQR 关于FlatQR的理解可以指向二维码(QR Code)生成服务的一部分,在某些情况下也可能是一个独立的小型库用来处理图像形式下的二维码创建与解析工作。如果是在前后端分离的应用场景下,则前端部分可能会利用HTML5 Canvas绘制图形界面的同时调用后端提供的API完成最终图片导出等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值