4

我正在使用 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's 添加到 UserResource 并没有从导出中排除这些字段

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

有任何想法吗?

4

3 回答 3

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

对于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 列(名字、姓氏和电子邮件)。

于 2015-03-06T19:14:55.593 回答
1

如果您想在 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)
于 2021-01-28T06:06:59.710 回答
1

需要进口

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
于 2018-12-18T01:18:16.983 回答