小编del*_*ser的帖子

Flask-SQLAlchemy:通过一个关系的多个过滤器

我有两个模型,标签和照片,有这样的多对多关系:

tag_identifier = db.Table('tag_identifier',
                          db.Column('photo_id', db.Integer, db.ForeignKey('photo.id')),
                          db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'))
                         )

class Tag(db.Model):
  id = db.Column(db.Integer, primary_key=True)

class Photo(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  tags = db.relationship('Tag', secondary=tag_identifier,
                         backref=db.backref('photos', lazy='dynamic'), lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)

我正在尝试查询具有多个特定标签的所有照片.例如,如果我要使用<Tag 1> 查询所有照片<Tag 2>:


Photo.query.join(Photo.tags).filter(Tag.id==1).all() 会回来的

[<Photo 1>, <Photo 2>, <Photo 3>, <Photo 4>],和

Photo.query.join(Photo.tags).filter(Tag.id==2).all() 会回来的

[<Photo 1>, <Photo 2>, <Photo 5>, <Photo 6>].


在此示例中,为了获得以下结果,我需要执行哪些操作: [<Photo 1>, <Photo 2>]

python sqlalchemy flask flask-sqlalchemy

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1

python ×1

sqlalchemy ×1