如何在Django管理员中组合两个或多个模型剂



我想在单个模型的管理界面上合并贡献项目提供了两种自定义模型。如何在单个模型上组合两个或多个模型admins,以使它们都适用于相同的管理接口?

我的特定场景:我正在使用Geodjango构建一个GIS应用程序,该应用程序跟踪位置。我的数据模型使用geodjango提供的模型。PointField()类型。为了能够编辑管理面板中的位置,我使用admin.osmgeoadmin admin模型注册了我的模型。

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)

如何在同一模型上组合这两个型号数字,以便我既可以使用图形地图工具来设置位置,又可以导入和导出对象?

如果我以前前进并尝试注册它们都这样:

admin.site.register(Prospect, admin.OSMGeoAdmin)
admin.site.register(Prospect, admin.ProspectIEAdmin)

我有以下错误:

AttributeError: module 'django.contrib.gis.admin' has no attribute 'ProspectIEAdmin'

我的问题与"我如何为同一模型拥有两个单独的模型介质"不同。我的问题是如何将两个ModelAdmins组合到相同的管理面板中。我知道我可以使用代理模型创建两个管理面板,一个带有映射工具,一个带有导出工具。但是我想要映射工具和导出工具不单独注册。

python允许多个类继承。尝试以下操作:

class ProspectIEAdmin(admin.OSMGeoAdmin, ImportExportModelAdmin):
    resource_class = ProspectResource
admin.site.register(Prospect, ProspectIEAdmin)

最新更新