我仍然坚持使用同一页面上的相关模型的内联树状结构。 我有三个型号,A,B和C.
Class A
Class B
fb = foreignkey(A)
Class C
fc = foreignkey(B)
在admin.py中,我正在做类似
的事情AdminA
inlines = [inlineB]
AdminB
inlines = [inlineC]
我希望在编辑/添加模型A时,我应该能够添加ModelB内联,并添加模型B的相关模型C条目。我正在尝试使用inlineformsets,但无法找到如何将它们用于我的目的。而且,我找到了this old discussion on same problem。但同样,由于我是Django的新手,我不知道如何让它发挥作用。
答案 0 :(得分:2)
回答你自己的问题有点奇怪,但是没有其他人加强。感谢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的Admin中使用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的完整对象的按钮。