我正在开发一个视频共享网站,用户可以根据视频发表评论,或评论其他人的评论。这是我的简化用户模型和评论模型:
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(MAX_USERNAME), unique=True)
comments = db.relationship('Comment', backref='replier', lazy='dynamic')
replied = db.relationship('Comment', backref='repliee', lazy='dynamic')
class Comment(db.Model):
__tablename__ = 'comments'
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text)
replier_id = db.Column(db.Integer, db.ForeignKey('users.id'), index=True)
repliee_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'参数,提供那些应计为包含对父表的外键引用的列的列表
有人可以帮忙吗?烧瓶和sqlalchemy的新手。
答案 0 :(得分:1)
comments
和replied
关系不知道要Comment
使用哪个外键列,因为replier_id
和repliee_id
都是指users.id
。
因此,请向foreign_keys
和comments
添加相应的replied
参数:
comments = db.relationship('Comment', backref='replier', lazy='dynamic', foreign_keys='[Comment.replier_id]')
replied = db.relationship('Comment', backref='repliee', lazy='dynamic', foreign_keys='[Comment.repliee_id]')