0

私はまだ同じページの関連モデルのインラインツリーのようなイディティングで立ち往生しています。A、B、Cの3つのモデルがあります。

Class A

Class B
    fb = foreignkey(A)

Class C
    fc = foreignkey(B)

admin.pyで私は次のようなことをしています

AdminA
    inlines = [inlineB]

AdminB
    inlines = [inlineC]

モデルAを編集/追加するときに、ModelBをインラインで追加し、モデル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 に答える