flask 多对多

在flask中实现字段间多对多关系, 需要手动创建中间的辅助表, 对于这个辅助表, 强烈建议不要使用模型,而是采用一个实际的表, 因为这个辅助表是永远不会被实例化使用的.


tags = db.Table('tags', db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')), db.Column('page_id', db.Integer, db.ForeignKey('page.id')) ) class Page(db.Model): id = db.Column(db.Integer, primary_key=True) # secondary: 在多对多关系, 指定关联表的名称 tags = db.relationship('Tag', secondary=tags, backref=db.backref('pages', lazy='dynamic'), lazy='dynamic') class Tag(db.Model): id = db.Column(db.Integer, primary_key=True)
  • 例2

文章和收藏


# 创建一个收藏的中间表 collections = db.Table( 'collections', db.Column('user.id', db.Integer, db.ForeignKey('user.id')), db.Column('post_id', db.Integer, db.ForeignKey('posts.id')) ) class User(db.Model, UserMixin): __tablename__ = 'user' id = db.Column(db.Integer, primary_key=True) # secondary: 在多对多关系, 指定关联表的名称 favorite = db.relationship('Posts', secondary='collections', backref=db.backref('users'), lazy='dynamic') class Posts(db.Model): id = db.Column(db.Integer, primary_key=True)

Leave a Reply

Your email address will not be published.