我正在使用Flask-Admin,我希望能够从列表视图中一次更新多个字段。看起来我正在寻找的是一种自定义动作。
我能够使它工作,但我怀疑不是最好的方式。我想知道是否可以做得更多" Flask" -ily。
我现在所做的事情,例如,如果我要更新表cars
中的所有行以获得tires = 4
:
CarView
类中的自定义操作会收集要修改的行的ID,来自request.referrer
的回调网址和表名cars
,并返回render_template(mass_update_info.html)
将这些作为参数。mass_update_info.html
是一个HTML表单,用户指定1)他们想要更改的字段和2)要将其更改为的值。在提交时,表单使用此数据对某个视图(do_mass_update
)进行POST(其他所有内容都作为此表单中的隐藏字段传递)。do_mass_update
使用发送给它的数据构建一个SQL查询字符串 - 完整地"UPDATE {} SET {}='{}' WHERE id IN ({})".format(table, column, value, ids)
- 通过db.engine.execute()
运行。让我感到困扰的是,我似乎没有使用任何SQLAlchemy,但是(从新手的角度来看)它似乎都基于模型对象,例如User.query(...)
,而我只能访问模型/表名作为字符串。我可以从模型中获取某种标识符,通过它,然后执行查找以检索另一侧的标识符吗?