SQLAlchemy多人关系问题
我想连接两个模型 模型1被称为“组”。它通过starter\u id、main\u id、summer\u id连接到几个“团队”。我希望有一个名为“团队”的字段,其中包含所有连接团队的列表SQLAlchemy多人关系问题,sql,sqlalchemy,flask-sqlalchemy,Sql,Sqlalchemy,Flask Sqlalchemy,我想连接两个模型 模型1被称为“组”。它通过starter\u id、main\u id、summer\u id连接到几个“团队”。我希望有一个名为“团队”的字段,其中包含所有连接团队的列表 class Group(db.Model): __tablename__ = 'groups' id = db.Column(db.Integer, primary_key=True) starter_id = db.Column(db.Integer, db.ForeignKey(
class Group(db.Model):
__tablename__ = 'groups'
id = db.Column(db.Integer, primary_key=True)
starter_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
main_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
dessert_id = db.Column(db.Integer, db.ForeignKey('teams.id'))
#Relationships
teams = db.relationship('Team', back_populates="group", foreign_keys= \
[starter_1_id, starter_2_id, starter_3_id, main_1_id, main_2_id, main_3_id, \
dessert_1_id, dessert_2_id, dessert_3_id])
class Team(db.Model):
__tablename__ = 'teams'
id = db.Column(db.Integer, primary_key=True)
group_id = db.Column(db.Integer, db.ForeignKey('groups.id'))
# Relationships
group = db.relationship("Group", back_populates="teams", foreign_keys=[group_id])
我得到这个错误:
sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition
between parent/child tables on relationship Group.teams - there are multiple
foreign key paths linking the tables. Specify the 'foreign_keys' argument,
providing a list of those columns which should be counted as containing a
foreign key reference to the parent table.
我显然不知道如何纠正这个错误;) 外键team.group
给出了“一个团队属于一个团队”关系(team.group
)及其相反的“一个团队有许多团队”(group.teams
),因此您需要编写:
teams = db.relationship('Team', back_populates="group", foreign_keys=lambda: Team.group_id)
谢谢,很好。你能给我一些提示lambda是做什么的吗?你需要
lambda
,因为你在定义关系时没有Team
的值,因为Group
和Team
各自的定义都依赖于对方。SQLAlchemy支持为关系的某些参数传递一个函数,以解决像这样的循环依赖关系。