user_image
By  十一有一米八哟    On   2021年4月11日 16:20

我的理解是:在中间表中,有两个字段的外键都指向Person(因为加入的成员必须是人,邀请人也必须是人)。所以在多对多关系指定的时候,Django并不知道他应该关联的是哪两个字段(其实应该是加入的的成员和组之间的关联),因此必须显示指定。 --------------------------------------------------------------------------------------------------------- 也就是说,“邀请人”只不过是“人-组”多对多关系的一个附带的“关系信息”,每一条这样的关系都可以添加一个附加的“邀请人”。 --------------------------------------------------------------------------------------------------------- 其次,我感觉为了避免这样的问题,可以养成习惯:不管“关联关系”表中是否有歧义外键(两个字段都外联Person),最好都在定义多对多关系时,加上through_fields=('group', 'person')。