異なるタイプのアイテムのカップルが外部キーを介して親として使用する親モデルがあります。親モデルには多対多の関係もあります。私は多くのモデルをクエリすることに基づいて子モデルを取得しようとしています。多くの関係Flask-SQLAlchemy親モデルと多対多の関係にあるフィルタ
これは、親モデル
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')
そして、多くのです
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'))
最後の例では、子モデル
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)
foののカップルがありますありますMediaItemモデルで定義された関係によって証明される他のタイプの子モデル。
タグで子モデルのフィルタリングを行う予定です。つまり、特定のタグが指定されている場合は、そのタグに関連付けられているすべての子モデルを返します。 。それはから参加するFROM句が見つかりませんでしたに参加しようとしました(、3つのテーブルを接続する方法を知っているが、得doesntのこと
Video.query.join(media_tags).filter_by(MediaItem.tags.any(Tags.tag.in_(tag)))
戻り値:「media_item」の間のいずれかの外部キー関係を見つけることができませんし、 'tags')
私のアプローチは何ですか?