对于我正在试验的数据库,建议我将Match
和Team
之间的关系从M2M改为两个1对1关系。逻辑是:每场比赛只有两个队。你知道吗
如何在我的models.py
中实现这一点让我绞尽脑汁;以下是我目前得到的(节略):
class Match(db.Model):
id = db.Column(db.String, primary_key=True)
# One to One x2 with Team
hometeam_id = db.Column(db.Integer, db.ForeignKey('team.id'))
awayteam_id = db.Column(db.Integer, db.ForeignKey('team.id'))
team = db.relationship("Team", back_populates="match")
hoemteam_goals = db.Column(db.Integer, nullable=False)
awayteam_goals = db.Column(db.Integer, nullable=False)
class Team(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)
points = db.Column(db.Integer)
matches_played = db.Column(db.Integer)
# Many side of M2M With Match
match = relationship("Match", back_populates="team", uselist=False)
这里似乎缺少一些东西,特别是在relationship
侧的Match
声明中。你知道吗
解决方案是为每个一对一关系添加一个关系引用,并使用
foreign_keys
的relationship
参数来指定要使用的id:我删除了
match
关系,因为它在这里没有用,IMHO。你知道吗相关文档如下:http://docs.sqlalchemy.org/en/latest/orm/join_conditions.html#relationship-foreign-keys
相关问题 更多 >
编程相关推荐