烧瓶foreign_keys仍然显示AmbiguousForeignKeysError [英] Flask foreign_keys still shows AmbiguousForeignKeysError
问题描述
我在一个实体中有两个外键,引用了另一个实体. 这是它的样子
I have two foreign keys in an entity refering to another entity. Here is how it looks
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')
但是,它仍然显示一个错误,提示我
However, it still shows me an error saying
有多个链接表的外键路径.指定 'foreign_keys'参数,提供这些列的列表,其中 应被视为包含对父级的外键引用 桌子
there are multiple foreign key paths linking the tables. Specify the 'foreign_keys' argument, providing a list of those columns which should be counted as containing a foreign key reference to the parent table
上述解决方法是我从其他一些帖子中获得的.我已经检查并更改了很多次,但仍然没有运气.我想知道它是否已经正确或有什么我想念的.需要帮助
The above workaround is what I get from some other posts. I have checked and changed many times, and still no luck. I wonder if it's already correct or there is something I miss. Need help
推荐答案
最后,在试图弄清楚之后,我得到了解决方法.就我而言,我不必将backref
放在Review类中.相反,我应该将用户backref
放在User
类本身中.因此,它应该如下图所示
Finally, I got the workaround after trying to figure out. In my case, I don't have to put backref
in Review class. Instead, I should put the User backref
in User
class itself. So, it should look like below
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
的评论列表时,我可以做的就是
Here, both types of User have many Reviews. Then, when I need to get the list of reviews of both User
, what I can do is
user = User.query.get(id)
user_reviews = User.user_reviews
business_user_reviews = user.business_user_reviews
而且我不再遇到此错误.
And I am no longer running across this error.
这篇关于烧瓶foreign_keys仍然显示AmbiguousForeignKeysError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!