sqlalchemy 多对多 删除时, 删除文章 和文章标签 不删除 标签?

libaibuaidufu
  • 1
新手上路,请多包涵

1.模型 代码

post_tags = db.Table('post_tags',
                       db.Column('post_id', db.Integer, db.ForeignKey('posts.id',ondelete='CASCADE'),
                                 primary_key=True),
                       db.Column('tag_id', db.Integer, db.ForeignKey('tags.id',ondelete='CASCADE'), primary_key=True)
                       )

class Posts(db.Model):
    __tablename__ = "posts"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(40))
    bookstyles = db.relationship("Tags", secondary=post_tags, backref=db.backref("posts", lazy="dynamic"),
                                  lazy="dynamic",cascade="all, delete-orphan",single_parent=True)  # 多 对 多 # cascade="all, delete-orphan",passive_deletes=True
class Tags(db.Model):
    __tablename__ = "tags"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(40))

post = Posts.query.get(1)
db.session.delete(post) # how to auto delete `post_tags`record,but dont delete `tags`record. 
db.session.commit()

2.如何删除一个post 同时auto delete 他相关的post_tags记录。但不删除tags?
3.应该如何来配置?

回复
阅读 1.7k
1 个回答
libaibuaidufu
  • 1
新手上路,请多包涵

我发现什么都不加 就是理想状态。

bookstyles = db.relationship("Tags", secondary=post_tags, backref=db.backref("posts", lazy="dynamic"),lazy="dynamic")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏