【发布时间】:2016-09-06 11:27:53
【问题描述】:
您好,我正在使用烧瓶和 sqlalchemy,我正在尝试获取 Team 中的匹配关系以获取所有匹配项,无论它是 team1 还是 team2 (所以我想要的是能够通过matches属性获得给定球队的所有比赛,无论它是Match表中的team1还是team2),我得到了错误:
sqlalchemy.exc.AmbiguousForeignKeysError:无法确定关系 Team.matches 上的父/子表之间的连接条件
有多个链接表的外键路径。指定 foreign_keys 参数,提供那些列的列表,这些列应该被视为包含对父表的外键引用。
class Match(db.Model):
id = db.Column(db.Integer, primary_key=True)
map = db.Column(db.String(80), index=True)
date = db.Column(db.DateTime, index=True)
agreed = db.Column(db.Boolean)
done = db.Column(db.Boolean)
ladder_id = db.Column(db.Integer, db.ForeignKey('ladder.id'))
team1_id = db.Column(db.Integer, db.ForeignKey('team.id'))
team2_id = db.Column(db.Integer, db.ForeignKey('team.id'))
team1_rounds = db.Column(db.Integer)
team2_rounds = db.Column(db.Integer)
team1_accepted_score = db.Column(db.Boolean)
team2_accepted_score = db.Column(db.Boolean)
points = db.Column(db.Integer)
team1 = db.relationship('Team', foreign_keys='Match.team1_id')
team2 = db.relationship('Team', foreign_keys='Match.team2_id')
class Team(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), index=True)
tag = db.Column(db.String(20), index=True, unique=True)
captain_id = db.Column(db.Integer, db.ForeignKey('user.id'))
captain = db.relationship('User', uselist=False,
foreign_keys='Team.captain_id')
members = db.relationship('User', backref='team',
foreign_keys='User.team_id', lazy='dynamic')
matches = db.relationship('Match',
foreign_keys='[Match.team1_id, Match.team2_id]', lazy='dynamic')
【问题讨论】:
标签: python python-2.7 python-3.x sqlalchemy flask-sqlalchemy