mma*_*tax 5 python sqlalchemy flask-sqlalchemy
我有一个类似于以下内容的用户模型:
class User(db.Model):
id = db.Column(db.BigInteger, primary_key=True)
account_id = db.Column(db.BigInteger, db.ForeignKey('account.id'))
account = db.relationship('Account',
backref=db.backref('ref_users', cascade='delete'))
...
def after_user_write(mapper, connection, target):
target.account.invalidate_cache()
event.listen(User, 'after_insert', after_user_write)
event.listen(User, 'after_update', after_user_write)
event.listen(User, 'after_delete', after_user_write)
Run Code Online (Sandbox Code Playgroud)
插入时after_user_write被调用,但是target.account是None(这会导致一个错误)时,我希望它是一个账户模式.target.account_id设置正确,似乎关系参考不能像我期望的那样工作.
关于是什么导致这个的任何想法?
手动创建对象时,SQLAlchemy 不会自动设置关系。如果想account在事件回调中访问,则在创建实例时设置User:
a1 = Account()
u1 = User(account_id=a1.id)
db.session.add(u1)
db.session.commit()
assert u1.account is None
a2 = Account()
# Here: set the account object, instead of the id
u2 = User(account=a2)
db.session.add(u2)
db.session.commit()
assert u2.account == a2
assert u2.account_id == a2.id
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |