Flask foreign_keys 仍然显示 AmbiguousForeignKeysError
Posted
技术标签:
【中文标题】Flask foreign_keys 仍然显示 AmbiguousForeignKeysError【英文标题】:Flask foreign_keys still shows 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' 参数,提供那些列的列表 应计为包含对父级的外键引用 表
上述解决方法是我从其他一些帖子中得到的。我已经检查并更改了很多次,但仍然没有运气。我想知道它是否已经正确或有什么我想念的。需要帮助
【问题讨论】:
您找到解决方案了吗?我花了一些时间试图找到答案,但无法让它发挥作用。 【参考方案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
我不再遇到此错误。
【讨论】:
以上是关于Flask foreign_keys 仍然显示 AmbiguousForeignKeysError的主要内容,如果未能解决你的问题,请参考以下文章
将 foreign_key 值传递给 Rails 控制器的更好方法
用flask-failsafe实现出现语法错误时flask仍然自带重启