【问题标题】:django-import-export to export User modeldjango-import-export 导出用户模型
【发布时间】:2015-03-05 19:28:12
【问题描述】:

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

我在通过用户管理员提供相同的导出选项时遇到了困难。

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

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

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

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

我尝试了以下...

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

class UserAdmin(ExportMixin, UserAdmin):
    pass

但这有几个问题,

  1. 它会从列表显示中删除一堆 User 模型字段(如 is_activegroups
  2. 我可以看到某些内容未完全连接,因为将 exclude 添加到 UserResource 不会从导出中排除这些字段

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

有什么想法吗?

【问题讨论】:

    标签: django django-admin django-import-export


    【解决方案1】:

    所以我犯了几个错误。

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

    【讨论】:

      【解决方案2】:

      需要进口

      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
      

      【讨论】:

        【解决方案3】:

        如果您想在 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)
        

        【讨论】:

          猜你喜欢
          • 2019-12-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-13
          • 2015-05-08
          • 2021-03-07
          • 1970-01-01
          相关资源
          最近更新 更多