Flask-SQLAlchemy:更新一对多关系

用户名

我有两个模型:

class Project(db.Model):
    __tablename__ = 'project'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    timestamp = db.Column(db.DateTime)
    info = db.Column(db.Text(255))

    post = db.relationship('Post', backref=db.backref('projects'))

class Post(db.Model):
    __tablename__ = 'post'

    id = db.Column(db.Integer, primary_key=True)
    headline = db.Column(db.String(64))
    content = db.Column(db.Text(255))
    timestamp = db.Column(db.DateTime)

    projectId = db.Column(db.Integer, db.ForeignKey('project.id'))

例如,如果我创建了一个post实例,然后通过projectInstance.append(post(headline="...", content="..."))
Now将其附加到项目中,那么我想更新post应该属于的项目。除了查询所需的项目,将帖子附加到该项目并将其从旧项目中删除,还有没有更简单的方法?

oldProject.remove(post)
newProject.append(post)
伊利亚·艾维拉(IljaEverilä)

用另一种方法来做:在中使用back引用Post

post.projects = newProject

这将处理所需的会话管理。这是一个最小的示例:

In [2]: class A(Base):
   ...:     __tablename__ = 'a'
   ...:     id = Column(Integer, primary_key=True, autoincrement=True)
   ...:     bs = relationship('B', backref='a')
   ...:

In [3]: class B(Base):
   ...:     __tablename__ = 'b'
   ...:     id = Column(Integer, primary_key=True, autoincrement=True)
   ...:     a_id = Column(Integer, ForeignKey('a.id'))
   ...:

In [5]: a1 = A()

In [6]: a2 = A()

In [7]: b = B()

In [8]: a1.bs.append(b)

In [9]: a1.bs
Out[9]: [<__main__.B at 0x7f7322fb52b0>]

In [10]: b.a = a2

In [11]: a1.bs, a2.bs
Out[11]: ([], [<__main__.B at 0x7f7322fb52b0>])

同样,只需将post实例附加newProject.post集合句柄即可自动删除,如我们的as和bs所示:

In [9]: a1.bs.append(b)

In [10]: a1.bs, a2.bs
Out[10]: ([<__main__.B at 0x7f26702565f8>], [])

In [11]: a2.bs.append(b)

In [12]: a1.bs, a2.bs
Out[12]: ([], [<__main__.B at 0x7f26702565f8>])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

flask-sqlalchemy,一对多关系,外键变为NULL

来自分类Dev

Flask + SQLAlchemy中一对一的设置关系

来自分类Dev

flask sqlalchemy一对一关系问题

来自分类Dev

Flask / SQLAlchemy-一对一关系语法

来自分类Dev

Flask-SQLAlchemy更新一对多记录

来自分类Dev

在Flask-Admin中显示一对多关系的第一个元素

来自分类Dev

如何在Flask SQL Alchemy中查询一对多/多对多关系?

来自分类Dev

Flask SQL Alchemy 多连接路径和一对多关系

来自分类Dev

Flask-SQLAlchemy 中的一对一关系仅以一种方式工作

来自分类Dev

在Flask,SqlAlchemy中获得一对一关系的“ insert_id”

来自分类Dev

SQLAlchemy一对多关系加入?

来自分类Dev

查询一对多关系SQLAlchemy

来自分类Dev

查询一对多关系SQLAlchemy

来自分类Dev

Flask-Sqlalchemy 3种多对多关系

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

我应该使用flask sqlalchemy多对多关系吗?

来自分类Dev

Flask-SQLAlchemy筛选与父模型的多对多关系

来自分类Dev

如何使用flask-sqlalchemy多次插入多对多关系?

来自分类Dev

Flask-Sqlalchemy,多对多关系中的辅助表的主键

来自分类Dev

一对多,Flask-SqlAlchemy,sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)关系不存在

来自分类Dev

在一对多关系上更新或创建

来自分类Dev

一对多关系LINQ更新查询

来自分类Dev

如何更新一对多关系MongoDB

来自分类Dev

自动更新一对多关系

来自分类Dev

SQLAlchemy + Flask多对一关系

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

Flask SQLAlchemy关系

来自分类Dev

Jsonify Flask-SQLAlchemy Flask中的多对一关系

来自分类Dev

SQLAlchemy一对多关系,如何过滤集合

Related 相关文章

热门标签

归档