Python 无法确定父/子表之间的联接条件,正在设置外键

Python 无法确定父/子表之间的联接条件,正在设置外键,python,flask,sqlalchemy,Python,Flask,Sqlalchemy,我编写了上面的代码,试图定义Fixture和Team之间的多种关系。当我运行应用程序并执行操作时,会出现以下错误: class Team(db.Model): __tablename__ = "Teams" id = db.Column(db.Integer, primary_key=True) flashscore_id = db.Column(db.String(255), nullable=False, unique=True) name = db.Colu

我编写了上面的代码,试图定义Fixture和Team之间的多种关系。当我运行应用程序并执行操作时,会出现以下错误:

class Team(db.Model):
    __tablename__ = "Teams"
    id = db.Column(db.Integer, primary_key=True)
    flashscore_id = db.Column(db.String(255), nullable=False, unique=True)
    name = db.Column(db.String(255), nullable=False)

    leagues = db.relationship("League",
                    secondary=league_teams_table)

    standings = db.relationship('Standing', backref='teams', cascade="all,delete")
    fixtures = db.relationship('Fixture', backref='teams', cascade="all,delete")

related_fixtures_table = db.Table('RelatedFixtures',
    db.Column('fixture_id', db.Integer, db.ForeignKey('Fixtures.id')),
    db.Column('related_fixture_id', db.Integer, db.ForeignKey('Fixtures.id')))

class Fixture(db.Model):
    __tablename__ = "Fixtures"
    id = db.Column(db.Integer, primary_key=True)

    home_id = db.Column(db.Integer, db.ForeignKey('Teams.id'),
        nullable=False)
    away_id = db.Column(db.Integer, db.ForeignKey('Teams.id'),
        nullable=False)

    home_ref = db.relationship("Teams", backref="fixture", uselist=False, foreign_keys=[home_id])
    away_ref = db.relationship("Teams", backref="fixture", uselist=False, foreign_keys=[away_id])

    flashscore_id = db.Column(db.String(255), nullable=False, unique=True)
    total_goals = db.Column(db.Integer, nullable=False)

    total_fh_goals = db.Column(db.Integer, nullable=False, default=0)
    total_sh_goals = db.Column(db.Integer, nullable=False, default=0)

    total_home_goals = db.Column(db.Integer, nullable=False)
    total_away_goals = db.Column(db.Integer, nullable=False)

    total_home_fh_goals = db.Column(db.Integer, nullable=False, default=0)
    total_home_sh_goals = db.Column(db.Integer, nullable=False, default=0)

    total_away_fh_goals = db.Column(db.Integer, nullable=False, default=0)
    total_away_sh_goals = db.Column(db.Integer, nullable=False, default=0)

    related_fixtures = db.relationship("Fixture",
                    secondary=related_fixtures_table)
我尝试通过添加以下两行来解决此问题:

sqlalchemy.exc.AmbiguousForeignKeysError: Could not determine join condition between parent/child tables on relationship Team.fixtures - 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.

但我还是犯了同样的错误。有人能帮我吗?

您需要在
团队
类上配置
fixtures
关系,因为这就是错误告诉您要做的:
无法确定联接条件。。。在关系团队.fixtures上

但是,您无法使用
外键解决此问题
;这需要一个(可能是复合的)外键,并且您有两个不同的外键关系。您必须创建两个独立的关系,一个用于该队为主队的赛程,另一个用于
客场
关系

如果希望
Team.fixtures
返回通过一个或两个外键引用团队的所有
Fixture
行的列表,则需要创建一个自定义
primaryjoin
条件,该条件与
Team.id
对应的
home\u id
away\u id
列相匹配(您可能希望在查询中添加一个
不同的
条件,以避免通过两个外键连接到您的团队的装置得到重复的结果)。

对于我的问题(与您的问题非常类似)it工作者非常了解官方文档中的示例:。一旦我完成任务,我将尝试发布我对您问题的答案,以防您在链接示例中找不到答案。
home_ref = db.relationship("Teams", backref="fixture", uselist=False, foreign_keys=[home_id])
    away_ref = db.relationship("Teams", backref="fixture", uselist=False, foreign_keys=[away_id])