ビデオ テーブルの各エントリの「関連ビデオ」のリストを取得できるように、Flask-SQLAlchemy を使用して多対多の関係を設定しようとしています。
class Videos(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), unique=False)
related_videos = db.relationship("Videos", \
secondary = "related_videos", \
primaryjoin="id==related_videos.c.video_id", \
secondaryjoin = "id==related_videos.c.related_id", \
backref ="related_to")
def __init__(self, title, ytid):
self.title = title
related_videos = db.Table("related_videos", \
db.Column("video_id", db.Integer, db.ForeignKey("Videos.id")), \
db.Column("related_id", db.Integer, db.ForeignKey("Videos.id")))
たとえば、新しいエントリを追加しようとするとexample = Videos("foobar")
、エラーが発生します。
sqlalchemy.exc.ArgumentError: リレーションシップ Videos.related_videos で、primaryjoin 条件 'related_videos.video_id = :video_id_1' のリレーションシップの方向を特定できませんでした。
なぜそれが機能しないのかわかりません - 私が知る限り、私は SQLAlchemy のドキュメントとほとんど同じことをしています (私はおそらく間違っています!)