安装:
注意版本兼容问题
pip install django-import-export
1. settings.py中注册应用
INSTALLED_APPS = [
......
# 注册导入功能
'import_export',
]
2. xadmin.py中代码
import xadmin
from import_export import resources
class MyCourseResource(resources.ModelResource):
"""自定义导入导出功能类"""
class Meta:
model = Course
# 定义导出数据的字段
# fields = ["name", "desc", "learn_times", "students"]
# 定义不导出的字段
# exclude = []
# @xadmin.sites.register(Course)
class CourseAdmin(object):
list_display = ["name", "desc", "degree", "learn_times", "students", "show_image", "goto_course"]
# 导入导出配置,此处也可以只配置一个导入功能或导出功能,而把另一个功能关掉
import_export_args = {"import_resource_class": MyCourseResource,
"export_resource_class": MyCourseResource}
3. 效果图
由于import_export带有导入导出功能,xadmin也自带导出功能,有个两个导出,我们可以把xadmin自带的export导出功能插件从plugins中__init__.py中将export注释掉即可
4. 如果导入功能报错
报错中间代码是:from import_export.admin import DEFAULT_FORMATS, SKIP_ADMIN_LOG, TMP_STORAGE_CLASS
ImportError: cannot import name 'SKIP_ADMIN_LOG'
报错最后代码是:"AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'users.UserProfile' that has not been installed
该错误排查了好长时间,原因是xadmin2.2中plugins中自带的importexport插件与虚拟环境中安装的import_export插件不兼容,
解决方法有两种:
(1)卸载并重新安装低版本的
pip uninstall django-import-export
pip install django-import-export == 2.4.0
扫描二维码关注公众号,回复:
13136230 查看本文章

(2)不卸载最新的django-import-export,而是在虚拟环境中site-packages下的import-export目录下的admin.py中加个这两个常量
SKIP_ADMIN_LOG = getattr(settings, 'IMPORT_EXPORT_SKIP_ADMIN_LOG', False)
TMP_STORAGE_CLASS = getattr(settings, 'IMPORT_EXPORT_TMP_STORAGE_CLASS',
TempFolderStorage)