5

管理ダッシュボードでカスタマイズされたビューを取得するためにインラインを使用しようとしています。以下はコードです

from django.contrib import admin # noqa
from oscar.core.loading import get_model
from oscar.apps.catalogue.admin import *

CategoryAttribute = get_model('catalogue', 'CategoryAttribute')
CategoryAttributeValue = get_model('catalogue', 'CategoryAttributeValue')
Category = get_model('catalogue', 'Category')

class CategoryAttributeInline(admin.TabularInline):
    model = CategoryAttributeValue
    fk_name = 'category'
    extra = 1

class CategoryAdmin(admin.ModelAdmin):
    inlines = [CategoryAttributeInline,]

admin.site.register(CategoryAttributeValue)
admin.site.register(CategoryAttribute)
admin.site.register(Category, CategoryAdmin)

私が得ているエラーは TypeError: 'MediaDefiningClass' object is not iterable

私のコードの問題は何ですか?

4

1 に答える 1

4

このエラーの原因は、レジスタ関数に間違った順序で引数を送信することである場合がありました。

ModelAdmin の登録順序を確認してください。最初にモデル クラス、次に ModelAdmin クラスです。

例: admin.site.register(Model, ModelAdmin)

register(MyModel) も機能するので、当然 2 番目は ModelAdmin でなければならないと思います。

于 2017-12-23T09:23:10.680 に答える