Python 具有关联对象的同一表上的多对多关系
相关(对于无关联对象用例): 建立多对多关系很容易。在同一张表上建立多对多关系几乎和上述问题中记录的一样简单 与关联对象建立多对多关系也很容易 我似乎找不到正确的方法来组合关联对象和多对多关系,左侧和右侧是同一个表 因此,从简单、天真、明显错误的版本开始,我一直在尝试将其转化为正确的版本:Python 具有关联对象的同一表上的多对多关系,python,sqlalchemy,Python,Sqlalchemy,相关(对于无关联对象用例): 建立多对多关系很容易。在同一张表上建立多对多关系几乎和上述问题中记录的一样简单 与关联对象建立多对多关系也很容易 我似乎找不到正确的方法来组合关联对象和多对多关系,左侧和右侧是同一个表 因此,从简单、天真、明显错误的版本开始,我一直在尝试将其转化为正确的版本: 映射此关系的正确方法是什么?我猜您会遇到一个错误,例如无法确定父/子表之间的联接条件… 在这种情况下,将Group\u的映射器更改为\u Group,如下所示: mapper(Group_To_Group,
映射此关系的正确方法是什么?我猜您会遇到一个错误,例如
无法确定父/子表之间的联接条件…
在这种情况下,将Group\u的映射器更改为\u Group
,如下所示:
mapper(Group_To_Group, t_group_groups, properties={
'parent_group':relationship(Group,
primaryjoin=(t_group_groups.c.parent_group_id==t_groups.c.id),),
'child_group':relationship(Group,
primaryjoin=(t_group_groups.c.child_group_id==t_groups.c.id),),
})
此外,您可能还需要添加
backref
,这样您就可以从组中导航关系了。我昨晚肯定做了一些微妙的错误。尽管如此,还是做到了,谢谢!
mapper(Group_To_Group, t_group_groups, properties={
'parent_group':relationship(Group,
primaryjoin=(t_group_groups.c.parent_group_id==t_groups.c.id),),
'child_group':relationship(Group,
primaryjoin=(t_group_groups.c.child_group_id==t_groups.c.id),),
})