返回 首页

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)

文章和收藏

# 创建一个收藏的中间表
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)

登录