烧瓶foreign_keys仍然显示AmbiguousForeignKeysError [英] Flask foreign_keys still shows AmbiguousForeignKeysError

查看:79
本文介绍了烧瓶foreign_keys仍然显示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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆