flask-admin的modelview 实现list列表视图中扩展修改状态按钮

news/2024/12/22 18:33:46/

背景:

flask-admin的模型视图(modelview 及其子类)中如果不想重构UI视图,那么就不可避免的出现默认视图无法很好满足需求的情况,如默认视图中只有“新增”,“编辑”,“选中的”三个按钮。

材料:

完整的flask-admin 开发环境

制作:

视图源码

1、在ModelView 子视图中直接添加column_extra_row_actions 的扩展实现

column_extra_row_actions = [LinkRowAction('glyphicon glyphicon-off', '/admin/aiconfig/changestatus/{row_id}'),EndpointLinkRowAction('glyphicon glyphicon-test', 'aiconfig.index_view')]

2、按钮图标直接去bootstrop 中复制替换即可使用(组件 · Bootstrap v3 中文文档 | Bootstrap 中文网) 

 

3、 /admin/aiconfig/changestatus/{row_id} 对应的业务实现代码

    @expose('/changestatus/<string:ai_id>', methods=('GET', 'POST'))def updateStatus(self, ai_id):if ai_id:return_url = request.values.get('url') or self.get_url('.index_view')model = self.get_one(ai_id)if model is None:flash(gettext('Record does not exist.'), 'error')return redirect(return_url)form = self.edit_form(obj=model)model.updated_at = datetime.today()model.status = 1 if model.status == 0 else 0if self.update_model(form, model):flash(gettext('Record was successfully saved.'), 'success')# save buttonreturn redirect(self.get_save_return_url(model, is_created=False))  else:return redirect(return_url)

注:直接写到当前视图即可

效果 

经验与注意点 

1、column_extra_row_actions 扩展类的EndpointLinkRowAction 实现中必填项第一个为图标,第二个为视图权限,如下:

EndpointLinkRowAction('glyphicon glyphicon-test', 'aiconfig.index_view')

注:上面代码片段中“aiconfig.index_view”中的aiconfig 为当前视图注册名,如果注册时没有定义,flask-admin 默认为modelview 的集成子类对应的模型名

  admin.add_view(MyAiConfigView(db.session, name='Dify配置', category='Dify管理'))

由于本例子中注册时没有特别声明Endpoint ,所以就会取 aiconfig,为该视图对应的实体名,通过视图中定义的下面代码片段可以看到

    def __init__(self, session, **kwargs):# You can pass name and other parameters if you want tosuper(MyAiConfigView, self).__init__(AiConfig, session, **kwargs)

2、第一点中提到的 aiconfig.index_view 其实可以省略为".index_view",如下代码片段,照样有效

  column_extra_row_actions = [LinkRowAction('glyphicon glyphicon-off', '/admin/aiconfig/changestatus/{row_id}'),EndpointLinkRowAction('glyphicon glyphicon-test', '.index_view')]

3、column_extra_row_actions 可以通过LinkRowAction 及其子类实现新扩展按钮的url连接。


http://www.ppmy.cn/news/1557260.html

相关文章

qt 鼠标点击事件

大概就这几种&#xff0c; 按左键右键 void QtWidgetsApplication7::mousePressEvent(QMouseEvent *event) {//如果是鼠标左键按下if (event->button() Qt::LeftButton) {QCursor cursor;cursor.setShape(Qt::ClosedHandCursor);QApplication::setOverrideCursor(cursor)…

springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率

用到的maven依赖&#xff1a; lombok依赖就不贴出来了 <dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg-platform</artifactId><version>4.3.2-1.5.5</version></dependency><dependency><groupId&…

电脑除尘更换cpu和显卡硅脂过程及安装win11系统中遇到的问题

原由 电脑是2022款的显卡TRX3050ti 的Y7000p,在使用过程中发现电脑风扇声音很大&#xff0c;想来也是用很久没有清理过灰尘了&#xff0c;在拆卸视频中发现一个换硅脂的&#xff0c;刚好手头有&#xff0c;想来也没换过&#xff0c;所以就直接换了。但修完后直接打开却出现了无…

HarmonyOS(72)事件拦截处理详解

事件拦截 1、参考资料2、HitTestMode3、onTouchIntercept、onTouch、onClick事件执行顺序3.1、系统默认事件传递顺序3.2、子组件拦截事件1、参考资料 HarmonyOS(71) 自定义事件分发之TouchTestStrategy使用说明HarmonyOS(70) ArkUI 事件分发拦截,事件冲突解决方案HitTestModea…

Windows Server 2019 配置PHP环境(图文教程)

操作系统&#xff1a;Windows Server 2019运行模式&#xff1a;IIS10 fastcgi PHP(安装IIS的时候选择上CGI)软件版本&#xff1a;MySQL 5.7.37 解压版 / PHP 7.4.29 / PHP Manager 1.5.0 / phpMyAdmin 5.1.3 1、MySQL 5.7.37 解压版安装&#xff1a; 为什么我会选择解压版而不…

CodeSurfer 和 Tree-sitter对比

CodeSurfer 和 Tree-sitter 都是代码分析工具&#xff0c;但它们的设计理念、功能和使用场景有很大的不同。要决定在解析一个 C 项目 时选择哪个工具&#xff0c;我们需要全面对比它们的特点、优劣和适用场景。 1. 简介对比 CodeSurfer&#xff1a; 是一个专门用于静态分析代码…

Elasticsearch-DSL高级查询操作

一、禁用元数据和过滤数据 1、禁用元数据_source GET product/_search {"_source": false, "query": {"match_all": {}} }查询结果不显示元数据 禁用之前: {"took" : 0,"timed_out" : false,"_shards" : {&quo…

【Qt】显示类控件:QLabel、QLCDNumber、QProgressBar、QCalendarWidget

目录 QLabel QFrame 例子&#xff1a; textFormat pixmap、scaledContents alignment wordWrap、indent、margin buddy QLCDNumber 例子&#xff1a; QTimer QProgressBar 例子&#xff1a; QCalendarWidget 例子&#xff1a; QLabel 标签控件&#xff0c;用来显示…