python-3.x - Flask sqlalchemy 连续更新多个字段
问题描述
最近从 expressjs 搬到了烧瓶。我正在创建一个烧瓶应用程序flask flask-sqlalchemy flask-wtf
这是一个形式繁重的应用程序。我预计会有大约 30-50 个表格,每个表格有 20-100 个字段。
客户端表单正在使用flask-wtf
我能够创建模型并能够创建 crud 功能。问题是每个表格我都必须手动完成
在创建 [...]
# after validation
someItem = SomeModel(someField1=form.someField1.data, ..., somefieldN = form.someFieldN.data)
db.session.add(someItem)
db.session.commit()
更新中
[....]
queryItem = SomeModel.query.filter_by(id=item_id)
queryItem.somefield1 = form.someField1.data
[...]
queryItem.somefieldN = form.someFieldN.data
db.session.commit()
显然,有很多表格,它变得非常乏味。有没有办法如果你能建议一个图书馆来做这件事,我已经在网上搜索了几个小时。我最接近的是创建一个字典,然后像传递它一样
someDict = {'someField1': form.someField1.data, ....}
SomeModel.query.filter_by(id=item.id).update(someDict)
如您所见,它同样乏味
我希望找到一种方法将表单数据直接传递SomeModel
给创建和更新。我以前使用过 expressjs + knex,我只是能够在验证后将 req.body 传递给 knex。
谢谢你的时间
解决方案
使用“populate_obj”(注意:模型字段名称必须与表单字段匹配)
创建记录:
someItem = SomeModel()
form.populate_obj(someItem)
db.session.add(someItem)
db.session.commit()
更新记录:
queryItem = SomeModel.query.filter_by(id=item_id)
form.populate_obj(queryItem)
db.session.commit()
推荐阅读
- c# - BitmapSource copypixels 方法不返回 rgb 像素数据
- c++ - C++ 中的类和封装 (OOP)
- php - 使用 cURL 登录页面后如何获取 cookie
- javascript - Angular.module 未在 IE 11 中加载
- swift - 在 SwiftEntryKit 中按下条目按钮后执行操作
- php - 在不超过时间限制的情况下保存许多csv的内容
- xml - XSLT 1.0 嵌套分组和循环
- dsl - DefaultTerminalConverters 的实现以实例化 Integer 而不是 Xtext 中的终端规则抛出 ClassCastException
- javascript - 对象中的数组在传递或 JSON.stringified 时为空
- android-studio - Android Emulator 反复丢弃 Charles Proxy