我正在尝试使用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文档一样(虽然我可能错了!)
答案 0 :(得分:0)
您似乎在“related_videos”表格中有两个同名的外国人(Videos.id)。
不应该将其命名为“related.id”吗?
此外,您将您的关系命名为与整个表格相同的名称,我不确定这是否正确。