2

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'も必要です。

どうすればこれを修正できますか?

ありがとう!

4

1 に答える 1

6

エラーメッセージが示すように、関係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")
    # ...

詳細については、relationship()への代替結合条件の指定を参照してください。

于 2011-12-06T22:21:57.763 に答える