如何将Django导入导出与admin.py中的列表显示相结合?

2024-10-01 13:37:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Django的新手,我想知道如何将导入导出模块与list_display中的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')

enter image description here

当我使用以下代码时,我可以看到导入和导出窗口小部件,但我再也看不到这两个字段(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)

enter image description here

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

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)

然后我不断收到以下错误:

enter image description here

如何让list_displayimport_export小部件一起工作?有人能解释一下吗


Tags: fromimportipregisteridadmindisplayexport
2条回答

在Youtube上找到答案:

以下代码实现了我的目标:

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

@admin.register(SwitchModel)
class SwitchModelAdmin(ImportExportModelAdmin):
    list_display = ('id', 'IP')

enter image description here

如果我正确理解了您的问题,您只需要将list_display选项添加到admin类中

    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

也许你可以通读一些best practice info

相关问题 更多 >