Sqlalchemy 炼金术:如何定义';评论';型号(多个外键引用同一个表)?

Sqlalchemy 炼金术:如何定义';评论';型号(多个外键引用同一个表)?,sqlalchemy,flask-sqlalchemy,Sqlalchemy,Flask Sqlalchemy,我正在一个视频分享网站上工作,在那里用户可以在视频下发表评论,或者对别人的评论发表评论。以下是我的简化用户模型和评论模型: 类用户(db.Model): __tablename_uu='users' id=db.Column(db.Integer,主键=True) username=db.Column(db.String(MAX_username),unique=True) comments=db.relationship('Comment',backref='replier',lazy='dy

我正在一个视频分享网站上工作,在那里用户可以在视频下发表评论,或者对别人的评论发表评论。以下是我的简化用户模型和评论模型:

类用户(db.Model):
__tablename_uu='users'
id=db.Column(db.Integer,主键=True)
username=db.Column(db.String(MAX_username),unique=True)
comments=db.relationship('Comment',backref='replier',lazy='dynamic')
repled=db.relationship('Comment',backref='repliee',lazy='dynamic')
类注释(db.Model):
__tablename_uu='comments'
id=db.Column(db.Integer,主键=True)
content=db.Column(db.Text)
replier_id=db.Column(db.Integer,db.ForeignKey('users.id'),index=True)
replie_id=db.Column(db.Integer,db.ForeignKey('users.id'),index=True)
video_id=db.Column(db.Integer,db.ForeignKey('videos.id'),index=True)
它提示我错误:

无法确定关系User.comments上的父/子表之间的联接条件-有多个外键路径链接这些表。指定'foreign_keys'参数,提供应计为包含对父表的外键引用的列的列表


有人能帮忙吗?flask和sqlalchemy新手。

注释和回复关系不知道要使用注释上的哪个外键列,因为回复者id和回复者id都指向用户id

因此,将适当的
外键
参数添加到
注释
回复

comments=db.relationship('Comment',backref='replier',lazy='dynamic',外键='[Comment.replier\u id]'))
repiled=db.relationship('Comment',backref='repliee',lazy='dynamic',foreign_key='[Comment.repliee_id]'))

谢谢,它很有效。关于sqlalchemy设计的另一个问题是:为什么在
关系中,要关联的类使用字符串,如我的示例中的
'Comment'
,但在
外键中,它使用直接引用:
Comment.replier\u id
Comment.replie\u id
?我不知道它是有意这样做的,还是只是随意设计的。在这两种情况下,它都会接受字符串或引用。使用字符串时,不必在该点定义所引用的模型。我想最好保持一致。