django-import-export 导出用户模型

sfl*_*che 4 django django-admin django-import-export

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

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

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

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

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    # Other admin definition here
Run Code Online (Sandbox Code Playgroud)

我的问题是为预打包的 Django 模型(如User.

我尝试了以下...

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

class UserAdmin(ExportMixin, UserAdmin):
    pass
Run Code Online (Sandbox Code Playgroud)

但这有几个问题,

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

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

有任何想法吗?

sfl*_*che 6

所以我犯了几个错误。

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

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

对于Other模型

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

class OtherAdmin(ExportMixin, admin.ModelAdmin):
    resource_class = OtherResource
    # Other admin definition here
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

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