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
但这有几个问题,
- 它从列表显示中删除了一堆
User
模型字段(如 is_active
和 groups
)
- 我可以看到有些东西没有完全连接,因为将
exclude
添加到 UserResource 并没有从导出中排除这些字段
我可以重新创建 UserAdmin
,但我希望(并猜测)这是不必要的。
有什么想法吗?
所以我犯了几个错误。
- 我是个白痴(我导入的是 django UserAdmin,而不是我几年前创建的 UserAdmin,作为对该项目的依赖项创建的 UserAdmin——这解释了为什么在覆盖 UserAdmin 时字段被删除)
- 我未能按照 django-import-export docs
中的说明手动将 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)
我正在使用 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
但这有几个问题,
- 它从列表显示中删除了一堆
User
模型字段(如is_active
和groups
) - 我可以看到有些东西没有完全连接,因为将
exclude
添加到 UserResource 并没有从导出中排除这些字段
我可以重新创建 UserAdmin
,但我希望(并猜测)这是不必要的。
有什么想法吗?
所以我犯了几个错误。
- 我是个白痴(我导入的是 django UserAdmin,而不是我几年前创建的 UserAdmin,作为对该项目的依赖项创建的 UserAdmin——这解释了为什么在覆盖 UserAdmin 时字段被删除)
- 我未能按照 django-import-export docs 中的说明手动将 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)