0

我仍然坚持使用同一页面上相关模型的内联树状编辑。我有三个模型,A,B和C。

Class A

Class B
    fb = foreignkey(A)

Class C
    fc = foreignkey(B)

在 admin.py 我正在做类似的事情

AdminA
    inlines = [inlineB]

AdminB
    inlines = [inlineC]

我希望当我编辑/添加模型 A 时,我应该能够内联添加模型 B,并添加模型 B 的相关模型 C 条目。我正在尝试内联表单集,但不知道如何将它们用于我的目的。此外,我发现这个关于同一问题的旧讨论。但同样,由于我是 Django 新手,我不知道如何让它工作。

4

1 回答 1

1

回答您自己的问题有点奇怪,但是嘿,没有其他人站出来。感谢 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 的完整对象。

于 2010-10-08T10:06:01.453 回答