2 взаимосвязи одного и того же имени таблицы, сбивающие с толку SQLAlchemy - PullRequest
2 голосов
/ 06 декабря 2011

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. Укажите «первичное соединение» выражение. Если «вторичный» присутствует, «вторичное соединение» необходимо как хорошо.

Как я могу это исправить?

Спасибо!

1 Ответ

6 голосов
/ 07 декабря 2011

Как следует из сообщения об ошибке, вам необходимо указать 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")
    # ...

См. Задание условий альтернативного соединения для отношения () для получения дополнительной информации.

...