【发布时间】:2014-10-16 20:51:26
【问题描述】:
我想在使用 Falsk-SQLAlachemy 将对象插入数据库之前更改它的属性。我尝试使用 before_models_committed 信号,但它似乎被破坏了,所以我尝试使用 models_commited 代替(并重新提交更改)并且我收到以下错误:
InvalidRequestError:此会话处于“已提交”状态;没有进一步的 可以在此事务中发出 SQL。
代码如下:
from app import db
from app import app
from flask.ext.sqlalchemy import models_committed
class Foo(db.Model):
id = db.Column(db.Integer, primary_key=True)
foo_attr = db.Column(db.String(128), index=True)
def on_models_committed(app, changes):
for change in changes:
foo_obj = change[0]
operation = change[1]
if foo_obj.__class__.__name__ == 'Foo':
if operation == 'insert':
foo_obj.foo_attr = get_new_value()
db.session.add(foo_obj)
db.session.commit()
models_committed.connect(on_models_committed)
有没有一种方法可以连接任何信号以在将新对象插入数据库时执行函数并保存这些更改?
谢谢!
【问题讨论】:
标签: python flask flask-sqlalchemy