【问题标题】:MediaDefiningClass Object is not iterable ?MediaDefiningClass 对象不可迭代?
【发布时间】:2015-11-11 16:49:31
【问题描述】:

尝试使用内联在管理仪表板中获取自定义视图。下面是代码

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

我的代码有什么问题?

【问题讨论】:

  • 错误发生在哪一行?请发布回溯。
  • 您是否使用了一些自定义的 ORM 字段,例如 JSONField、BTW?

标签: python django django-oscar


【解决方案1】:

有时导致此错误的原因是以错误的顺序向寄存器函数发送参数。

查看注册 ModelAdmin 的顺序:首先是模型类,然后是 ModelAdmin 类。

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

我想当然第二个必须是 ModelAdmin,因为 register(MyModel) 也可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2017-01-05
    • 2021-06-06
    • 2013-05-27
    • 2013-08-02
    相关资源
    最近更新 更多