同一个表名的2个关系混淆了SQLAlchemy

时间:2011-12-06 18:44:52

标签: sqlalchemy flask flask-sqlalchemy

IE:

class Share(db.Model):
    """
    Stores the Checkpoint shares between users
    """
    id = db.Column(db.Integer, primary_key=True)
    user_from_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user_from = db.relationship("User")
    user_to_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    user_to = db.relationship("User")

我收到错误:

  

ArgumentError:无法确定父/子之间的连接条件   关于Share.user_from的关系表。指定'primaryjoin'   表达。如果存在'secondary',则需要'secondaryjoin'   好。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:6)

如错误消息所示,您需要为relationships指定primaryjoin值:

class Share(db.Model):
    # ...
    user_from = relationship("User", primaryjoin="Share.user_from_id==User.id")
    user_to = relationship("User", primaryjoin="Share.user_to_id==User.id")
    # ...

有关详细信息,请参阅Specifying Alternate Join Conditions to relationship()