django-import-export to export用户模型

时间:2015-03-05 19:28:13

标签: 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

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

我尝试了以下内容......

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

class UserAdmin(ExportMixin, UserAdmin):
    pass

但这有几个问题,

  1. 它会从列表显示中删除一堆User模型字段(例如is_activegroups
  2. 我可以看到某些内容未完全关联,因为向UserResource添加exclude并未排除导出中的这些字段
  3. 我可以在我的结尾重新创建UserAdmin,但我希望(并猜测)这是不必要的。

    有什么想法吗?

3 个答案:

答案 0 :(得分:4)

所以我犯了几个错误。

  1. 我是一个白痴(我导入django UserAdmin,而不是几年前我创建的UserAdmin依赖于这个项目 - 这解释了为什么在覆盖UserAdmin时删除了字段)
  2. 我未按照django-import-export docs
  3. 中的说明手动将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列(名字,姓氏和电子邮件)。

答案 1 :(得分: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)

答案 2 :(得分:0)

需要进口

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