0

我正在尝试使用 Flask-SQLAlchemy 建立多对多关系,以便我可以为 Videos 表中的每个条目创建一个“相关视频”列表。

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 文档几乎相同的事情(尽管我可能错了!)

4

1 回答 1

0

您似乎在“related_videos”表中有两个同名的外键(Videos.id)。

不应该命名为“related.id”吗?

此外,您将您的关系命名为与整个表相同的名称,我也不确定这是否正确。

于 2012-12-02T05:17:49.863 回答