Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLAlchemy多人关系问题_Sql_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

SQLAlchemy多人关系问题

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(

我想连接两个模型

模型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('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支持为
关系的某些参数传递一个函数,以解决像这样的循环依赖关系。