如何使用flask-sqlachemy中的一对多关系更新实体

时间:2017-04-06 11:35:21

标签: python-2.7 sqlalchemy flask-sqlalchemy

我有两个模型,类父母和类Child,我想更新这些类的属性,假设,我们有:  parent_name =“P1”,child_name = {“c1”,“c2”,“c3”}, 更新后,我们将拥有,parent_name =“P2”,child_name = {“c1”,“c2”,“c3”,“c4”,“c5”

我已经研究过了,没有找到解决方案,给出了建议

class Parent(db.Model):
    __tablename__ = 'parent'
    id = db.Column(db.Integer, primary_key=True)
    children = relationship("Child" backref='parent', passive_deletes=True)
    parent_name = db.Column(db.String(64))

class Child(Base):
    __tablename__ = 'child'
    id = db.Column(db.Integer, primary_key=True)
    parent_id = Column(Integer, ForeignKey('parent.id', ondelete='CASCADE'))
   child_name = db.Column(db.String(64))

1 个答案:

答案 0 :(得分:0)

parent = session.query(Parent).filter(Parent.name='P1').one()
parent.parent_name = 'P2'
parent.children.extend([Child(child_name='c4'), Child(childe_name='c5')])
session.commit()

首先从会话中查询父级。然后编辑它,它将保留在会话中,这样当您提交时,会话中的更改将传播到数据库。

相关问题