回答您自己的问题有点奇怪,但是嘿,没有其他人站出来。感谢 Bernd 为我指明了正确的方向。该解决方案需要制作一个中间模型。就我而言,BC级。
class A(models.Model):
a = models.IntegerField()
class B(models.Model):
fb = models.ForeignKey(A)
b = models.IntegerField()
class C(models.Model):
fc = models.ForeignKey(B)
c = models.IntegerField()
class BC(models.Model):
fc = models.ForeignKey(A)
fb = models.ForeignKey(B)
而不是在模型 A 的管理员中使用 InlineB,而是使用 BC 的内联。所以完整的 admin.py 看起来像。
class InlineC(admin.TabularInline):
model = C
extra = 1
class BCInline(admin.TabularInline):
model = BC
extra = 1
class AdminA(admin.ModelAdmin):
fieldsets = [
(None, {
'fields': ('a',)
}),
]
inlines = [BCInline]
class AdminB(admin.ModelAdmin):
fieldsets = [
(None, {
'fields': ('b',)
}),
]
inlines = [InlineC]
瞧,我在模型 A 的添加页面中获得了 popus 的按钮来创建 B 的完整对象。