Связано (для случая использования объекта без ассоциации): SQLAlchemy Отношение «многие ко многим» в одной таблице
Построить отношение «многие ко многим» легко.Построить отношение «многие ко многим» на одной и той же таблице почти так же просто, как описано в приведенном выше вопросе.
Построить отношение «многие ко многим» с объектом ассоциации также просто.
То, что я не могу найти, - это правильный способ объединить объекты ассоциации и отношения «многие ко многим» с левой и правой сторонами, являющимися одной и той же таблицей.
Итак, начиная с простого, наивногои явно неправильная версия, которую я потратил навсегда, пытаясь втиснуть в правильную версию:
t_groups = Table('groups', metadata,
Column('id', Integer, primary_key=True),
)
t_group_groups = Table('group_groups', metadata,
Column('parent_group_id', Integer, ForeignKey('groups.id'), primary_key=True, nullable=False),
Column('child_group_id', Integer, ForeignKey('groups.id'), primary_key=True, nullable=False),
Column('expires', DateTime),
)
mapper(Group_To_Group, t_group_groups, properties={
'parent_group':relationship(Group),
'child_group':relationship(Group),
})
Каков правильный способ отобразить эти отношения?