Flask-SQLAlchemy单表上的多对多关系

时间:2012-12-01 18:08:25

标签: python sqlalchemy flask flask-sqlalchemy

我正在尝试使用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:无法确定主要条件'related_videos.video_id =:video_id_1'的关系方向,关系视频.reve_videos。

我不确定为什么它不起作用 - 据我所知,我做的几乎和SQLAlchemy文档一样(虽然我可能错了!)

1 个答案:

答案 0 :(得分:0)

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

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

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