django-import-export 导出用户模型

django-import-export to export User model

我正在使用 django-import-export 库成功地通过 django 管理为我定义的一些模型提供数据下载选项。

不过,我很难通过用户管理提供相同的导出选项。

对于我的其他模型,我对我的 admin.py 做了如下操作:

class OtherResource(resources.ModelResource):
    class Meta:
        model = Other

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    # Other admin definition here

我的问题是为预打包的 Django 模型提供相同的导出功能,例如 User

我尝试了以下...

class UserResource(resources.ModelResource):
    class Meta:
        model = User

class UserAdmin(ExportMixin, UserAdmin):
    pass

但这有几个问题,

  1. 它从列表显示中删除了一堆 User 模型字段(如 is_activegroups
  2. 我可以看到有些东西没有完全连接,因为将 exclude 添加到 UserResource 并没有从导出中排除这些字段

我可以重新创建 UserAdmin,但我希望(并猜测)这是不必要的。

有什么想法吗?

所以我犯了几个错误。

  1. 我是个白痴(我导入的是 django UserAdmin,而不是我几年前创建的 UserAdmin,作为对该项目的依赖项创建的 UserAdmin——这解释了为什么在覆盖 UserAdmin 时字段被删除)
  2. 我未能按照 django-import-export docs
  3. 中的说明手动将 OtherResource link 发送给 OtherAdmin

以上两个代码示例的解决方法如下:

对于 Other 模型

class OtherResource(resources.ModelResource):
    class Meta:
        model = Other

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    resource_class = OtherResource
    # Other admin definition here

以及 User 模型

class UserResource(resources.ModelResource):
    class Meta:
        model = User
        fields = ('first_name', 'last_name', 'email')

class UserAdmin(ExportMixin, UserAdmin):
    resource_class = UserResource
    pass

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

中提琴
一切都按预期工作。
Other模型完整导出。
User 模型导出为 3 列(名字、姓氏和电子邮件)。

需要进口

from import_export import resources
from import_export.admin import ExportMixin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin

如果你想在 Django 的用户模型中导入导出然后在你的应用程序中覆盖此代码admin.py

from import_export import resources
from import_export.admin import ExportMixin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
from import_export.admin import ImportExportModelAdmin

# Register your models here.


class UserResource(resources.ModelResource):
    class Meta:
        model = User
        fields = ('id','username','first_name', 'last_name', 'email')

# class UserAdmin(ExportMixin, UserAdmin):
#     resource_class = UserResource
#     pass

class UserAdmin(ImportExportModelAdmin):
    list_display = ('id','username','first_name', 'last_name', 'email')
    # list_filter = ('created_at',)
    resource_class = UserResource
    pass



admin.site.unregister(User)
admin.site.register(User, UserAdmin)