首页 > 解决方案 > 如何在 admin.py 中将 Django import_export 与 list_display 结合使用?

问题描述

我是 Django 新手,我想知道如何将 import_export 模块与list_displayin结合起来admin.py

例如:

当我使用 list_display 显示两个字段(id 和 IP)时,下面的代码admin.py可以正常工作,但我看不到导入导出小部件:

from django.contrib import admin
from .models import SwitchModel

@admin.register(SwitchModel)
class SwitchAdmin(admin.ModelAdmin):
    list_display = ('id','IP')

在此处输入图像描述

当我使用下面的代码时,我可以看到导入和导出小部件,但我不再看到这两个字段(id 和 IP):

from django.contrib import admin
from .models import SwitchModel
from import_export import resources
from import_export.admin import ImportExportModelAdmin

class SwitchModelResource(resources.ModelResource):
    class Meta:
        model = SwitchModel

class SwitchModelAdmin(ImportExportModelAdmin):
    resource_class = SwitchModelResource

admin.site.register(SwitchModel, SwitchModelAdmin)

在此处输入图像描述

我尝试将两组代码组合在一起,如下所示:

from django.contrib import admin
from .models import SwitchModel
from import_export import resources
from import_export.admin import ImportExportModelAdmin

@admin.register(SwitchModel)
class SwitchAdmin(admin.ModelAdmin):
    list_display = ('id','IP')

class SwitchModelResource(resources.ModelResource):
    class Meta:
        model = SwitchModel

class SwitchModelAdmin(ImportExportModelAdmin):
    resource_class = SwitchModelResource

admin.site.register(SwitchModel, SwitchModelAdmin)

然后我一直收到以下错误:

在此处输入图像描述

我怎样才能让小部件list_displayimport_export小部件一起工作?有人可以对此有所了解吗?

标签: pythondjangodjango-import-export

解决方案


如果我正确理解了您的问题,您只需将您的list_display选项添加到您的管理课程中。

    from django.contrib import admin
    from import_export import resources
    from import_export.admin import ImportExportModelAdmin

    from .models import SwitchModel
    

    class SwitchModelResource(resources.ModelResource):
        class Meta:
            model = SwitchModel
    

    class SwitchModelAdmin(ImportExportModelAdmin):
        list_display = ('id', 'IP')
        resource_class = SwitchModelResource
    

    admin.site.register(SwitchModel, SwitchModelAdmin)

还值得注意的是,对模型使用小写字段名称是一种很好的做法,ip而不是IP.

也许阅读一些最佳实践信息


推荐阅读