Tôi có một mô hình Phụ huynh mà một cặp cho các loại mục khác nhau sử dụng làm phụ huynh của chúng thông qua khóa ngoại. Tôi cũng có mối quan hệ nhiều đến nhiều trên mô hình gốc. Tôi đang cố gắng để có được mô hình con dựa trên truy vấn nhiều đến nhiều mô hình.Bộ lọc Flask-SQLAlchemy trên nhiều mối quan hệ với mô hình gốc
Đây là mô hình mẹ
class MediaItem(db.Model):
__tablename__ = "media_item"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String, unique=True)
tags = db.relationship('Tags', secondary=tags_joiner, backref='media_items')
videos = db.relationship('Video', backref='Parent', lazy='dynamic')
audios = db.relationship('Audio', backref='Parent', lazy='dynamic')
pictures = db.relationship('Picture', backref='Parent', lazy='dynamic')
codes = db.relationship('Code', backref='Parent', lazy='dynamic')
Và nhiều mối quan hệ
class Tags(db.Model):
__tablename__ = 'tags'
id = db.Column(db.Integer, primary_key=True)
tag = db.Column(db.String, unique=True, nullable=False)
tags_joiner = db.Table('tags_joiner',
db.Column('tag_id', db.Integer, db.ForeignKey('tags.id')),
db.Column('mediaitem_id', db.Integer, db.ForeignKey('media_item.id')),
db.PrimaryKeyConstraint('tag_id', 'mediaitem_id'))
Cuối cùng có một ví dụ fo mô hình con
class Video(db.Model):
__tablename__ = 'video'
id = db.Column(db.Integer, primary_key=True)
parent_id = db.Column(db.Integer, db.ForeignKey('media_item.id'))
file_name = db.Column(db.String, unique=True)
Có một vài các loại mô hình con khác được chứng minh bằng các mối quan hệ được xác định trong mô hình MediaItem.
Tôi đang tìm cách lọc mô hình con theo thẻ. Đó là để nói rằng cho một thẻ cụ thể, trả về tất cả các mô hình con được liên kết với thẻ đó.
Video.query.join(media_tags).filter_by(MediaItem.tags.any(Tags.tag.in_(tag)))
Returns rằng nó không biết làm thế nào để kết nối ba bảng, (có thể không tìm thấy một mệnh đề FROM tham gia từ Cố gắng tham gia, nhưng có:. Không thể tìm thấy bất kỳ mối quan hệ khoá ngoại giữa 'media_item' và 'tags'.)
Cách tiếp cận này có thể là gì?