django建站过程(5)添加导入导出功能

django建站过程(5)添加导入导出功能

后端添加导入导出功能

django-import-export

参考官方:

Installation and configuration --- django-import-export 3.3.4.dev0 documentation

安装命令

复制代码
pip install django-import-export

settings.py添加到INSTALLED_APPS

python 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'baseapps.apps.BaseappsConfig',     #或者使用 baseapps
    'mdeditor',
    'import_export',	#加入应用

]

创建一个resource.py

在app所在目录下创建resource.py,代码定义两个类

python 复制代码
from import_export import resources
from baseapps.models import topic,documentes

class topicResource(resources.ModelResource):
    
    class Meta:
        model = topic

class documentesResource(resources.ModelResource):

    class Meta:
        model = documentes

配置Admin

修改admin.py,修改的地方就是把我们定义的Admin类原本继承的admin.ModelAdmin改成ImportExportModelAdmin

python 复制代码
from django.contrib import admin
from baseapps.resource import topicResource,documentesResource      #添加resource.py中的类
from baseapps.models import topic,documentes
from import_export.admin import ImportExportModelAdmin              #导入导出功能
# Register your models here.

class topicAdmin(ImportExportModelAdmin):       # ExportMixin导出,ImportMixin导入,ImportExportModelAdmin导入导出
    resource_class = topicResource              # 引入设定的导出字段,现在是全部
admin.site.register(topic,topicAdmin)

# class docAdmin(admin.ModelAdmin):
class docAdmin(ImportExportModelAdmin):         # ExportMixin导出,ImportMixin导入,ImportExportModelAdmin导入导出
    list_display = ('title','author','date_added','topic')     # ModelAdmin列表页展示的字段名
    search_fields = ('title','author',)      #添加"标题"查询
    list_filter = ('topic',)  # 直接激活过滤器
    resource_class =documentesResource          ## 引入设定的导出字段

admin.site.register(documentes,docAdmin)   # docAdmin只有注册后才能使用

定义导入导出的字段

export_order是导出的字段顺序,fields是定义字段导入(注意字段是否能为空)

python 复制代码
class documentesResource(resources.ModelResource):

    class Meta:
        model = documentes
        fields = ('id', 'topic', 'title', 'date_added','text',)     #定义需要导入哪些字段
        
        export_order = ('id', 'title','topic',  'date_added','text',)   #定义导出的字段顺序
        

其他

python 复制代码
exclude = ['id']											#导入时排除id主键
import_id_fields = ['id']			#定义主键id,这样在id同样的情况下就是更新而不是增加新记录了
id = Field(attribute='id', column_name='编号')		#定义导出时列名为中文'编号'
name = Field(attribute='title', column_name='书籍名称')		
# 定义导出时列名为中文'标题',也可以用column_name=documentes.title.field.verbose_name
相关推荐
企业软文推广2 分钟前
奥迪A5L×华为:品牌营销视角下的燃油车智能突围战!
python·华为
shark_chili5 分钟前
程序员必知的底层原理:CPU缓存一致性与MESI协议详解
后端
愿时间能学会宽恕21 分钟前
SpringBoot后端开发常用工具详细介绍——SpringSecurity认证用户保证安全
spring boot·后端·安全
Pocker_Spades_A22 分钟前
Python快速入门专业版(十五):数据类型实战:用户信息录入程序(整合变量、输入与类型转换)
数据库·python
IMER SIMPLE27 分钟前
人工智能-python-深度学习-神经网络-GoogLeNet
人工智能·python·深度学习
CodeSheep36 分钟前
稚晖君又开始摇人了,有点猛啊!
前端·后端·程序员
小宁爱Python40 分钟前
Django 从环境搭建到第一个项目
后端·python·django
uzong1 小时前
深入浅出:画好技术图
后端·架构
IT_陈寒1 小时前
Java性能优化:从这8个关键指标开始,让你的应用提速50%
前端·人工智能·后端
程序员清风1 小时前
快手一面:为什么要求用Static来修饰ThreadLocal变量?
java·后端·面试