如何在 django admin 中组合两个或多个 ModelAdmins
How to combine two or more ModelAdmins in django admin
contrib 项目提供了两个自定义 ModelAdmin,我想将它们合并到一个模型的管理界面上。我如何将两个或多个 ModelAdmins 组合到一个模型上,以便它们都适用于同一个管理界面?
我的具体情况:我正在使用 geodjango 构建一个 gis 应用程序,它会跟踪位置。我的数据模型使用 geodjango 提供的 models.PointField() 类型。为了能够在管理面板中编辑位置,我使用 admin.OSMGeoAdmin 管理模型注册了我的模型。
admin.site.register(Prospect, admin.OSMGeoAdmin)
这现在向我展示了一个带有地图的图形位置选择器,这正是我想要的。但是,我想导入和导出这些对象。通常我会为此使用 import_export ModelAdmin,它看起来像这样:
class ProspectResource(resources.ModelResource):
class Meta:
model = Prospect
class ProspectIEAdmin(ImportExportModelAdmin):
resource_class = ProspectResource
admin.site.register(Prospect, admin.ProspectIEAdmin)
如何将这两个 ModelAdmin 组合到同一个模型上,以便我既可以使用图形地图工具设置位置,又可以导入和导出对象?
如果我提前尝试像这样注册它们:
admin.site.register(Prospect, admin.OSMGeoAdmin)
admin.site.register(Prospect, admin.ProspectIEAdmin)
我收到以下错误:
AttributeError: module 'django.contrib.gis.admin' has no attribute 'ProspectIEAdmin'
我的问题不同于 "how do I have two separate ModelAdmins for the same model."我的问题是如何将两个 ModelAdmin 组合到同一个管理面板中。我知道我可以使用代理模型来创建两个管理面板,一个带有映射工具,另一个带有导出工具。但是我希望映射工具和导出工具一起注册,而不是分开注册。
Python 允许多重 class 继承。试试这个:
class ProspectIEAdmin(admin.OSMGeoAdmin, ImportExportModelAdmin):
resource_class = ProspectResource
admin.site.register(Prospect, ProspectIEAdmin)
contrib 项目提供了两个自定义 ModelAdmin,我想将它们合并到一个模型的管理界面上。我如何将两个或多个 ModelAdmins 组合到一个模型上,以便它们都适用于同一个管理界面?
我的具体情况:我正在使用 geodjango 构建一个 gis 应用程序,它会跟踪位置。我的数据模型使用 geodjango 提供的 models.PointField() 类型。为了能够在管理面板中编辑位置,我使用 admin.OSMGeoAdmin 管理模型注册了我的模型。
admin.site.register(Prospect, admin.OSMGeoAdmin)
这现在向我展示了一个带有地图的图形位置选择器,这正是我想要的。但是,我想导入和导出这些对象。通常我会为此使用 import_export ModelAdmin,它看起来像这样:
class ProspectResource(resources.ModelResource):
class Meta:
model = Prospect
class ProspectIEAdmin(ImportExportModelAdmin):
resource_class = ProspectResource
admin.site.register(Prospect, admin.ProspectIEAdmin)
如何将这两个 ModelAdmin 组合到同一个模型上,以便我既可以使用图形地图工具设置位置,又可以导入和导出对象?
如果我提前尝试像这样注册它们:
admin.site.register(Prospect, admin.OSMGeoAdmin)
admin.site.register(Prospect, admin.ProspectIEAdmin)
我收到以下错误:
AttributeError: module 'django.contrib.gis.admin' has no attribute 'ProspectIEAdmin'
我的问题不同于 "how do I have two separate ModelAdmins for the same model."我的问题是如何将两个 ModelAdmin 组合到同一个管理面板中。我知道我可以使用代理模型来创建两个管理面板,一个带有映射工具,另一个带有导出工具。但是我希望映射工具和导出工具一起注册,而不是分开注册。
Python 允许多重 class 继承。试试这个:
class ProspectIEAdmin(admin.OSMGeoAdmin, ImportExportModelAdmin):
resource_class = ProspectResource
admin.site.register(Prospect, ProspectIEAdmin)