Flask foreign_keys仍显示AmbiguousForeignKeysError

M R*_*hfi 6 python mysql foreign-keys flask flask-sqlalchemy

我在实体中有两个外键引用另一个实体.这是它的外观

    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])
Run Code Online (Sandbox Code Playgroud)

class User(db.Model):
  __tablename__ = 'User'
  id = db.Column(db.Integer, primary_key = True)
  reviews = db.relationship('Review', backref='user',
                            lazy='dynamic')
Run Code Online (Sandbox Code Playgroud)

但是,它仍然显示错误说

有多个链接表的外键路径.指定'foreign_keys'参数,提供应列为包含对父表的外键引用的列的列表

上面的解决方法是我从其他一些帖子得到的.我已经多次检查和更改,但仍然没有运气.我想知道它是否已经正确或者我想念的东西.需要帮忙

M R*_*hfi 6

最后,我试图找出后得到了解决方法.在我的情况下,我不必放入backrefReview类.相反,我应该将User 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)
Run Code Online (Sandbox Code Playgroud)

在这里,两种类型的用户都有很多评论.然后,当我需要获得两者的评论列表时User,我能做的是

user = User.query.get(id)
user_reviews = User.user_reviews
business_user_reviews = user.business_user_reviews
Run Code Online (Sandbox Code Playgroud)

而且我不再遇到这个错误.