【发布时间】:2019-09-24 19:54:08
【问题描述】:
我正在尝试将 django-import-export 中的模型资源添加到 Wagtail 的管理员中。我能找到的唯一文档说你会通过钩子来做。问题是,我不断收到错误消息:
missing 2 required positional arguments: 'model' and 'admin_site'
整个resource 和ModelAdmin 是:
class AccountResource(resources.ModelResource):
class Meta:
model = Account
fields = ('first_name', 'last_name', 'email', 'created', 'archived')
class AccountsAdmin(ImportExportModelAdmin, ModelAdmin):
resource_class = AccountResource
model = Account
menu_label = 'Accounts' # ditch this to use verbose_name_plural from model
menu_icon = 'group' # change as required
menu_order = 200 # will put in 3rd place (000 being 1st, 100 2nd)
add_to_settings_menu = False # or True to add your model to the Settings sub-menu
exclude_from_explorer = False # or True to exclude pages of this type from Wagtail's explorer view
list_display = ('first_name', 'last_name', 'email', 'created', 'archived')
search_fields = ('first_name', 'last_name', 'email', 'created')
# Now you just need to register your customised ModelAdmin class with Wagtail
modeladmin_register(AccountsAdmin)
有什么建议吗?
【问题讨论】:
-
那个文件是 wagtail_hooks.py 文件吗?此外,Wagtail 的 modeladmin 与 Django 完全分离,因此您不能将
resource_class声明为AccountsAdmin, and I doubt if you can includeImportExportModelAdmin` 的属性作为类声明的一部分。参考:docs.wagtail.io/en/latest/reference/contrib/modeladmin/… -
也可以在这里搜索“class ModelAdmin(WagtailRegisterable):”查看可以为 ModelAdmin 清除的所有属性:github.com/wagtail/wagtail/blob/…
-
现在我很困惑,根据这个评论github.com/wagtail/wagtail/issues/5347#issuecomment-499939911我应该可以用钩子注册它。
-
我现在理解的更清楚了。关于问题 5347 的评论中提到的是创建管理模块:docs.wagtail.io/en/latest/reference/hooks.html#admin-modules。当我在您的代码中看到
ModelAdmin和modeladmin_register时,我以为您想这样做:docs.wagtail.io/en/latest/reference/contrib/modeladmin/…。管理模块涉及更多,并允许您构建全新的管理区域。ModelAdmin仅用于以更简单的方式在管理员中包含常规 Django 模型。
标签: django django-admin wagtail django-import-export