我必须从一个奇怪的数据库中提取一些信息,为此,我需要一个自引用的多对多关系。表格关系如下:
class A(db.Model):
__tablename__ = 'A'
a_id = db.Column(db.Integer, primary_key=True)
class B(db.Model):
__tablename__ = 'B'
a_id = db.Column(db.Integer, db.ForeignKey(A.a_id), primary_key=True)
c_id = db.Column(db.Integer, db.ForeignKey(C.c_id), primary_key=True)
class C(db.Model):
__tablename__ = 'C'
c_id = db.Column(db.Integer, primary_key=True)
class D(db.Model):
__tablename__ = 'D'
a_id = db.Column(db.Integer, db.ForeignKey(A.a_id), primary_key=True)
c_id = db.Column(db.Integer, db.ForeignKey(C.c_id), primary_key=True)
所以,A有另一个A到B,通过C和D.我试着解决这个问题:
class A(db.Model):
__tablename__ = 'A'
a_id = db.Column(db.Integer, primary_key=True)
another_a = db.relationship('A', secondary='join(B, D, D.c_id == B.c_id).join(A, D.a_id == A.a_id)')
结果我收到以下错误:
AmbiguousForeignKeysError:无法确定之间的连接条件 关系Build.promoted_build上的父/子表 - 有 通过辅助表'“B”链接表的多个外键路径 JOIN“C”ON“B”.c_id =“D”.c_id JOIN“A”ON“D”.a_id =“A”.a_id'。 指定'foreign_keys'参数,提供这些列的列表 应该将其视为包含来自的外键引用 每个父表和子表的辅助表。
有人可以帮助我吗?