Python Отношения родных братьев SQLAlchemy - отношения над другой таблицей - как определить? - PullRequest
0 голосов
/ 24 марта 2020

У меня есть модель, в которой есть соревнования и участники .

Модель

Участник имеет отношение к Соревнование
+ обратная связь с Соревнование в сторону Участник

competition = relationship(
   "Competition", backref=backref("contestants", order_by="Contestant.place.asc()")
)

Цель / Требуемый результат

Цель должен получить "братьев и сестер" текущего участника (включая себя)

Вариант использования

У каждого участника есть интерфейс, в котором он видит список всех соревнований, в которых участвовал - у каждого элемента списка есть детали - кто в итоге оказался на каком месте в этом конкурсе, упорядоченный от низкого до высокого - список результатов для «Я» может выглядеть так:

Competition 1
   Place 1: Me
   Place 2: SomeOneElse
   Place 3: AnotherPerson

Competition 2
   Place 1: SomeOneElse
   Place 2: Me
   Place 3: AnotherPerson

Вопрос

Теперь я думаю, что смогу с go по

contestant.competition.contestants

... но это похоже на движение туда-сюда - есть ли более прямой путь? может быть какое-то объединение определений в отношениях?
Или есть какие-то отношения "родных братьев" (аналогично тому, как существуют самореферентные - или, может быть, что-то происходит от этого?)

Примечание: Обратите внимание, что я не ищу для самоссылки на себя в виде дерева «родитель-потомок» - но для ссылки на моих братьев и сестер через другую таблицу. Также обязателен внутренний порядок по месту.

Спасибо!

...