将 django import_export 添加到抽象用户模型

Adding django import_export to Abstract User Model

下面是我的 admin.py 文件。

我想在作为抽象用户模型的员工模型上实现 import_export 功能。

from django.contrib import admin
from inventory.models import Employee
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group
from import_export.admin import ImportExportModelAdmin
admin.site.unregister(Group)

# admin.site.register(Employee)


class EmployeeAdmin(UserAdmin):
    list_display = ('emp_num', 'emp_name', 'email',
                    'emp_designation', 'is_admin', 'is_staff')
    search_fields = ('emp_num', 'emp_name')

    readonly_fields = ('last_login',)
    ordering = ('emp_num',)
    filter_horizontal = ()
    list_filter = ('is_admin',)
    fieldsets = ()


admin.site.register(Employee, EmployeeAdmin)

ImportExportModelAdmin [readthedocs.io] is just a ModelAdmin with a ImportExportMixin [readthedocs.io],所以可能最干净的解决方案是使用 ImportExportMixin:

from django.contrib import admin
from inventory.models import Employee
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import Group
from import_export.admin import <b>ImportExportMixin</b>
admin.site.unregister(Group)

# admin.site.register(Employee)


class EmployeeAdmin(<b>ImportExportMixin</b>, UserAdmin):
    list_display = ('emp_num', 'emp_name', 'email',
                    'emp_designation', 'is_admin', 'is_staff')
    search_fields = ('emp_num', 'emp_name')

    readonly_fields = ('last_login',)
    ordering = ('emp_num',)
    filter_horizontal = ()
    list_filter = ('is_admin',)
    fieldsets = ()


admin.site.register(Employee, EmployeeAdmin)