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
相关推荐
地铁潜行者4 小时前
Kafka 只发了一条消息,为什么业务侧消费了两次?
后端
文心快码BaiduComate4 小时前
提升组织级AI Coding质量:电商搜索项目实践
前端·后端·程序员
啊森要自信4 小时前
【GUI自动化测试】控件、鼠标键盘操作与多场景自动化
c语言·开发语言·python·adb·ipython
YJlio4 小时前
《Sysinternals实战指南》16.5 Ctrl2Cap 工具详解:把 Caps Lock 变成 Ctrl 的键盘改造与回退方法
linux·运维·服务器·网络·python·学习·计算机外设
某林2124 小时前
从底层硬件死锁到 QoS 通信底层的全链路复盘
python·ros2·qos
Jutick4 小时前
WebSocket 连接没断,行情却停了:如何给实时数据流加双层 watchdog?
python
石头城的小石头4 小时前
【从0到1的鼠标位置显示记录器,基于python环境pycharm下编译实施,最终打包为exe,欢迎交流】
python·目标跟踪·pycharm·计算机外设·鼠标
用户8356290780514 小时前
Python 操作 Word 修订跟踪(Track Changes)
后端·python
电商API_180079052474 小时前
Python 实现闲鱼商品列表批量采集,接口异常重试机制搭建
大数据·开发语言·数据库·爬虫·python
放下华子我只抽RuiKe54 小时前
FastAPI 全栈后端(四):认证与授权
开发语言·前端·javascript·python·深度学习·react.js·fastapi