下面是django admin后台添加导出excel功能的完整攻略,包含两条示例说明。
1. 添加django-import-export库
在终端中运行以下命令,安装django-import-export库:
pip install django-import-export
2. 在models.py中定义需要导出的模型
假设我们有一个模型叫做Person,在models.py中进行定义:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=200)
age = models.IntegerField()
3. 在admin.py中添加导出excel功能
在admin.py中,通过导入ExportActionMixin
, ImportExportModelAdmin
和resources
来添加导出excel功能。
from django.contrib import admin
from import_export import resources
from import_export.admin import ExportActionMixin, ImportExportModelAdmin
from .models import Person
class PersonResource(resources.ModelResource):
class Meta:
model = Person
class PersonAdmin(ExportActionMixin, ImportExportModelAdmin):
resource_class = PersonResource
list_display = ('name', 'age')
admin.site.register(Person, PersonAdmin)
在上面的代码中,我们定义了一个PersonResource
和PersonAdmin
类。PersonResource
定义了要导出的模型,并设置了要导出的字段。
PersonAdmin
继承了ExportActionMixin
和ImportExportModelAdmin
,这个类提供了导出和导入数据的功能。resource_class
属性指定了要使用的资源类,list_display
属性定义了要在列表视图中显示的字段。
现在,当我们在管理后台查看Person模型时,页面上会多一个导出Excel的按钮,点击即可导出Excel数据。同时也支持导入Excel数据,该功能可以极大地提高管理后台的效率。
示例1:导出指定字段
在上面的示例中,我们定义了要导出的Person
模型,其默认导出所有字段。但是有时候我们只需要导出部分字段,可以在PersonResource
中指定要导出的字段,例如:
class PersonResource(resources.ModelResource):
class Meta:
model = Person
fields = ('name', 'age')
这样导出的Excel文件中只会包含name
和age
这两个字段。
示例2:导出过滤数据
有时候我们只需要导出满足特定条件的数据,可以在PersonResource
中重写get_queryset
方法,例如:
class PersonResource(resources.ModelResource):
class Meta:
model = Person
fields = ('name', 'age')
def get_queryset(self):
return Person.objects.filter(age__gte=18)
这样导出的Excel文件中只会包含年龄大于等于18岁的人的信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django admin后台添加导出excel功能示例代码 - Python技术站