【问题标题】:Flask foreign_keys still shows AmbiguousForeignKeysErrorFlask foreign_keys 仍然显示 AmbiguousForeignKeysError
【发布时间】:2015-05-16 15:21:30
【问题描述】:

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

    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' 参数,提供那些列的列表 应计为包含对父级的外键引用 表

上述解决方法是我从其他一些帖子中得到的。我已经检查并更改了很多次,但仍然没有运气。我想知道它是否已经正确或有什么我想念的。需要帮助

【问题讨论】:

  • 您找到解决方案了吗?我花了一些时间试图找到答案,但无法让它发挥作用。

标签: python mysql flask foreign-keys flask-sqlalchemy


【解决方案1】:

最后,我在尝试弄清楚后得到了解决方法。就我而言,我不必将 backref 放在 Review 类中。相反,我应该将 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)

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

user = User.query.get(id)
user_reviews = User.user_reviews
business_user_reviews = user.business_user_reviews

我不再遇到此错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2013-10-12
    • 2021-08-24
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多