Django Import-Export
Django Import-Export 是一个 Django 应用程序,它提供了一种方便的导入和导出数据的方式。通过 Django Import-Export,您可以轻松地导入和导出数据库中的数据,而无需编写复杂的代码。在本文中,我们将深入探讨 Django Import-Export 的用法和功能,并演示如何通过示例代码来实现数据的导入和导出。
安装 Django Import-Export
要开始使用 Django Import-Export,首先需要安装它。可以使用 pip 来安装 Django Import-Export:
pip install django-import-export
安装完成后,在项目的 settings.py 文件中添加 ‘import_export’ 到 INSTALLED_APPS 中:
INSTALLED_APPS = [
...
'import_export',
]
导出数据
使用 Django Import-Export 可以轻松地导出数据库中的数据。首先需要创建一个导出器类,指定要导出的模型和字段:
from import_export import resources
from myapp.models import MyModel
class MyModelResource(resources.ModelResource):
class Meta:
model = MyModel
fields = ('name', 'description', 'created_at')
然后,在 admin.py 文件中注册导出器:
from django.contrib import admin
from import_export.admin import ExportMixin
from myapp.models import MyModel
from myapp.resources import MyModelResource
@admin.register(MyModel)
class MyModelAdmin(ExportMixin, admin.ModelAdmin):
resource_class = MyModelResource
现在,在 Django admin 界面中,您将看到一个新的导出按钮,点击它即可导出数据。下面是一个示例代码,演示如何导出 MyModel 模型的数据:
python manage.py runserver
在浏览器中打开 http://127.0.0.1:8000/admin/myapp/mymodel/,登录并选择需要导出的数据,然后点击 Export 按钮即可导出数据。
导入数据
除了导出数据,Django Import-Export 还允许您轻松地导入数据。首先需要创建一个导入器类,指定要导入的模型和字段:
from import_export import resources
from myapp.models import MyModel
class MyModelResource(resources.ModelResource):
class Meta:
model = MyModel
fields = ('name', 'description', 'created_at')
然后,在 admin.py 文件中注册导入器:
from django.contrib import admin
from import_export.admin import ImportMixin
from myapp.models import MyModel
from myapp.resources import MyModelResource
@admin.register(MyModel)
class MyModelAdmin(ImportMixin, admin.ModelAdmin):
resource_class = MyModelResource
现在,在 Django admin 界面中,您将看到一个新的导入按钮,点击它即可导入数据。下面是一个示例代码,演示如何导入数据到 MyModel 模型:
python manage.py runserver
在浏览器中打开 http://127.0.0.1:8000/admin/myapp/mymodel/,点击 Import 按钮,选择要导入的文件(CSV 或 Excel 格式),然后点击上传按钮即可导入数据。
高级功能
除了基本的导入和导出功能,Django Import-Export 还提供了一些高级功能,如字段映射、过滤器、导入前后的操作等。下面是一个示例代码,演示如何设置字段映射和导入前后的操作:
from import_export import resources
from myapp.models import MyModel
class MyModelResource(resources.ModelResource):
class Meta:
model = MyModel
fields = ('name', 'description', 'created_at')
field_mapping = {
'名字': 'name',
'描述': 'description',
'创建日期': 'created_at',
}
def before_import_row(self, row, row_number=None, **kwargs):
row['name'] = row['name'].upper()
def after_import_row(self, row, row_number=None, **kwargs):
print(f'Imported row {row_number}: {row}')
这里,我们设置了字段映射,将导入文件中的中文字段名映射到模型中的英文字段名;同时,我们在导入前将 name 字段的值转换为大写,在导入后打印导入的行数据。通过这种方式,您可以对导入的数据做进一步的处理和操作。
结语
通过本文的介绍,您已经了解了如何使用 Django Import-Export 来轻松地导入和导出数据,以及一些高级功能的使用方法。