【发布时间】:2013-06-19 14:56:09
【问题描述】:
Flask-SQLAlchemy 给出了一个example 如何创建多对多关系。它是在两个不同的表之间完成的。
是否可以在同一张表上创建多对多关系?例如,一个姐妹可以有很多姐妹,谁也会有很多姐妹。我试过了:
girl_sister_map = db.Table('girl_sister_map',
db.Column('girl_id',
db.Integer,
db.ForeignKey('girl.id')),
db.Column('sister_id',
db.Integer,
db.ForeignKey('girl.id')))
class Girl(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
sisters = db.relationship('Girl',
secondary=girl_sister_map,
backref=db.backref('othersisters', lazy='dynamic'))
但是当我尝试为一个女孩添加一个妹妹时,我得到:
sqlalchemy.exc.AmbiguousForeignKeysError:无法确定关系 Girl.sisters 上父/子表之间的连接条件 - 有多个外键路径通过辅助表“girl_sister_map”链接表。指定 'foreign_keys' 参数,提供这些列的列表,这些列应计为包含从辅助表到每个父表和子表的外键引用。
这可能吗?我该怎么做?
【问题讨论】: