Django 与一切相关的一切

Django 与一切相关的一切,django,Django,我正在尝试建立一个系统,其中某些模型都是相互关联的,并且可以在管理员中以相互更改的形式进行修改 例如,与事件A和事件B相关的人员A,在编辑事件A或事件B时,您可以查看、修改和排序人员A 最初,我使用一个超级关系表(superrelationships table)来实现这一点,我使用它作为一个贯穿表。此表由每个型号的外键组成。然后,我使用这个关系表使用django管理内联线,它为我的示例提供了一个解决方案。这也允许我为每种模型类型都有单独的内联线,因此很容易管理 但是我遇到的问题是,我不能让事件

我正在尝试建立一个系统,其中某些模型都是相互关联的,并且可以在管理员中以相互更改的形式进行修改

例如,与
事件A
事件B
相关的
人员A
,在编辑
事件A
事件B
时,您可以查看、修改和排序
人员A

最初,我使用一个超级关系表(superrelationships table)来实现这一点,我使用它作为一个贯穿表。此表由每个型号的外键组成。然后,我使用这个关系表使用django管理内联线,它为我的示例提供了一个解决方案。这也允许我为每种模型类型都有单独的内联线,因此很容易管理

但是我遇到的问题是,我不能让
事件A
直接与
事件B
相关,因为我缺少关系表上的两个
事件
外键

有没有一种方法可以使用超级表来解决自我关系,或者我应该使用另一种方法

为了解释得更清楚一点,这里有一些图片解释了我正在尝试做的事情。基本上,我希望看到
Person 1
与对象的关系
Person 1
被附加到


上面使用的是通用外键作为关系的父字段,但这会创建唯一的记录,并且不允许我从相关项更改关系。

可能是您想要的。通用关系实际上不起作用,因为它们会为每个对象创建唯一的记录,也就是说,我不能回到另一个物体上,看到这个关系的相反方向。我不确定我是否理解你所遇到的确切问题。使用超级表上的
GenericForeignKey
和(
Event
Person
)模型上定义的
genericorrelation
,您可以在两个方向上进行遍历。将
标记
s指向一个对象,而将
关系
s指向两个对象(因此模型上有2x3个字段)。由于关系是泛型的(您可以指向任何模型类的任何对象),因此它可以将一个人连接到一个事件,也可以将一个事件连接到另一个事件。泛型外键用于父赋值,而关系是其他外键,但目标是能够通过内联管理员将
Bar1
Bar2
分配给
Foo1
,然后在
Bar1
的更改表单上也可以将
Foo1
视为内联。对于泛型父对象,我的关系表中的所有记录对于该对象都是唯一的,而不是从两侧都可以编辑。