1

Djangoadmin.ModelAdminクラスからサブクラスを作成することは可能ですか?

私は次のようなことをしようとしています:

class PageAdmin(admin.ModelAdmin):
    form = PageAdminForm
    # Plus many other stuff here (that I don't want to copy/paste in PlacePageAdmin to keep dry...)

class PlacePageAdmin(PageAdmin):
    form = PlacePageAdminForm

    def get_form(self, request, obj=None, **kwargs):
        return super(PlacePageAdmin, self).get_form(request, obj, **kwargs)

    def get_fieldsets(self, request, obj=None):
        fieldsets = copy.deepcopy(super(PlacePageAdmin, self).get_fieldsets(request, obj))
        fieldsets.insert(0,
            ('Place', {
                'fields': (
                    ('address', 'postcode', 'town'),
                ),
            })
        )
        return fieldsets

    def queryset(self, request):
        return PlacePage.objects.filter(page_type=Page.PLACE)

u"Key 'address' not found in Form"PlacePageAdmin フォーム ページにアクセスしようとすると、エラーが発生します。

誰かがそのようなことをしたことがありますか?

事前にどうもありがとうございました!

編集 - フォーム コード:

class PageAdminForm(forms.ModelForm):
    extra_field = forms.CharField()
    class Meta:
        model = Page

class PlacePageAdminForm(PageAdminForm):
    class Meta:
        model = PlacePage
4

1 に答える 1

0

もちろん、これは基本的なpythonです。さらに、クラス継承リストに追加できるミックスインを作成できます。これは、より便利な場合があります-複数のソースからの継承のより小さくて単純な例として

あなたが得ているエラーはあなたのフォームに関連しています.うまくいかないことはほとんどありません.

  • 最も一般的なのは、form.ModelForm のどのフィールドが定義されているかの定義です。これらのフィールドは、ModelForm クラス内の Meta クラスで指定されます。継承には問題があるため、継承されたフォームで適切に設定するようにしてください。

  • 2 番目のフォームまたはモデルで定義されていないフィールドがある可能性があります。その場合、フォームの継承が失敗する可能性があります。

于 2016-06-13T22:53:15.510 に答える