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')
Я пытаюсь запросить все фотографии, которые имеют несколько конкретных тегов. Например, если бы я запросил все фотографии с<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>]