我在实体中有两个外键引用另一个实体。 这是它的外观
class Review(db.Model):
__tablename__ = 'Review'
id = db.Column(db.Integer, primary_key = True)
user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False)
business_user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False)
user = db.relationship('User', foreign_keys=[user_id])
business_user = db.relationship('User', foreign_keys=[business_user_id])
和
class User(db.Model):
__tablename__ = 'User'
id = db.Column(db.Integer, primary_key = True)
reviews = db.relationship('Review', backref='user',
lazy='dynamic')
然而,它仍然显示错误说
有多个链接表的外键路径。指定 ' foreign_keys'参数,提供那些列的列表 应计为包含对父项的外键引用 表
以上解决方法是我从其他帖子中获得的。我已经多次检查和更改,但仍然没有运气。我想知道它是否已经正确或者我想念的东西。需要帮助
答案 0 :(得分:6)
最后,我在弄清楚后得到了解决方法。就我而言,我不必将backref
放在Review课程中。相反,我应该将用户backref
放在User
类中。所以,它应该如下所示
class Review(db.Model):
__tablename__ = 'Review'
id = db.Column(db.Integer, primary_key = True)
user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False)
business_user_id = db.Column(db.Integer, db.ForeignKey('User.id'), nullable=False)
user = relationship('User', backref='user_reviews', foreign_keys=user_id)
business_user = relationship("User", backref='business_user_reviews', foreign_keys=[business_user_id])
class User(db.Model):
__tablename__ = 'User'
id = db.Column(db.Integer, primary_key = True)
这里,两种类型的用户都有很多评论。然后,当我需要获取User
的评论列表时,我能做的就是
user = User.query.get(id)
user_reviews = User.user_reviews
business_user_reviews = user.business_user_reviews
我不再遇到此错误。