Django中利用Admin后台实现Excel/CSV的导入更新数据库和导出数据到Excel/CSV

news2024/12/24 9:08:51

本文基于Django自带的admin 后台实现Excel,csv,Json等格式文件的导入并更新后台数据库。

核心是引入 django-import-export模块。

1、测试相数据准备:

我们先创建一个app:app01

python manage.py startapp app01

然后在app01文件夹下的models.py 中写入如下模型数据:

# app01/models.py

class Author(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Book(models.Model):
    name = models.CharField('Book name', max_length=100)
    author = models.ForeignKey(Author, blank=True, null=True,on_delete=models.CASCADE)
    author_email = models.EmailField('Author email', max_length=75, blank=True)
    imported = models.BooleanField(default=False)
    published = models.DateField('Published', blank=True, null=True)
    price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
    categories = models.ManyToManyField(Category, blank=True)

    def __str__(self):
        return self.name

2、安装django-import-export

指定清华镜像会快很多

pip install django-import-export -i https://pypi.tuna.tsinghua.edu.cn/simple

3、settings.py中修改和添加配置项

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    'import_export',
]

# django-import-export配置
IMPORT_EXPORT_USE_TRANSACTIONS = True  # 默认值为False。它确定库是否会在数据导入中使用数据库事务,以确保安全。

修改两处:

  • 注册import_export ,app01
  • 添加配置项:IMPORT_EXPORT_USE_TRANSACTIONS = True

4、添加admin展示和导出的信息

要最终使用import_export 实现导入导出功能,需要在在admin.py中指定需要导入导出的模型和相关字段信息。

比如:

#app01/admin.py

from import_export import resources
from .models import Book
from import_export.admin import ImportExportModelAdmin

class BookResource(resources.ModelResource):
    class Meta:
        model = Book

class BookAdmin(ImportExportModelAdmin):
    resource_classes = [BookResource]

admin.site.register(Book, BookAdmin)

以上代码实现了如下:

class BookResource(resources.ModelResource):指定模型导入导出相关字段和方式(这里简单的通过:model = Book,指定了导入导出会涉及所有字段)

class BookAdmin(ImportExportModelAdmin):继承自ImportExportModelAdmin实现admin集成。

admin.site.register(Book, BookAdmin):将模型注册到Django后台。

5、测试演示

admin主页:

Book模型管理页,出现导入导出按钮了。

准备文件,导入数据(文件表头需要按照字段名命名,否则导入数据会无法识别)

6、结语

上文为了快速实现功能,我们把resourcesadmin类写在了一个文件里面,在实际的项目中,可以将所有的定义Resource的文件,写入到独立的resources.py中,用的时候引入就行了。

class BookResource(resources.ModelResource):
    class Meta:
        model = Book

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考下午题第1题——数据流,题目分析与案例解析:

答题技巧-【11-12分】分必拿方法: 下午第一题肯定是数据流的题目,那么,数据流肯定要找到对应的实体、关系模式等内容,审题的时候一定要细致,下午时间也是相当够的,所以每句话记住,至少读3遍&am…

【pyhon】利用pygame实现彩图版飞机大战(附源码 可供大作业练习使用)

源码请点赞关注收藏后评论区留言或私信博主 演示视频已上传到我的主页 有需要者可自行观看 演示视频如下: 飞机大战接下来先介绍一下游戏的玩法 在PyCharm中运行《彩图版飞机大战》即可进入如图1所示的游戏界面。 具体的操作步骤如下: (1&…

Android Native APP开发笔记:多线程编程

文章目录目的Java中的多线程ThreadRunnableTimerAndroid中的多线程HandlerAsyncTask总结目的 Android中UI线程对于开发者和用户来说都是最主要接触到的线程。一般来说为了UI流畅、不卡顿,耗时操作是不推荐放在UI线程中的。但是耗时操作的需求又是存在的&#xff0c…

Spring Cloud(八):Spring Cloud Alibaba Seata 2PC、AT、XA、TCC

事务简介 分布式事务:https://www.processon.com/view/link/61cd52fb0e3e7441570801ab 本地事务 JDBC 事务模式 Connection conn ... //获取数据库连接 conn.setAutoCommit(false); //开启事务 try{//...执行增删改查sqlconn.commit(); //提交事务 }catch (Exce…

【C++学习】日期类和内存管理

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! 日期类的实现和内存管理🏬日期类的实现🏬C/C内存分布🏬C内存管理方…

【工具】Git-码农“吃饭的碗”要拿好

汝之观览,吾之幸也!本文主要讲解的是Git的轻巧使用(创建、下载、上传、更新、回退),我们平常都是通过idea自带的git工具,或者其他工具来拉取提交代码,这里主要用命令行的方式拉取代码&#xff0…

基于springboot+vue的心理预约咨询测试交流小程序

💖💖作者:IT跃迁谷毕设展 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等。平常会做一些项目定制化开发…

【REST系列】详解REST架构风格 —— 带你阅读Web发展史上的一个重要技术文献

文章目录REST详解词组解释论文摘要REST架构约束一、Client–server:客户端-服务器二、Stateless:无状态三、Cacheability:缓存四、⭐Uniform Interface:统一接口 (RESTful API)五、Layered System:分层系统六、Code-On…

荧光生物标记物510758-19-7,5-羧基荧光素-炔烃,5-FAM alkyne

5-FAM-Alkyne 是一种高选择性和灵敏的荧光生物标记物,可用于标记碱性磷酸酶 (ALP)。炔烃可以通过铜催化的点击化学与多种叠氮化合物共轭。(西安凯新生物科技有限公司​所有的试剂仅用于科研实验,不可用于人体试验) 5-FAM Alkyne …

【Hadoop】P2 Hadoop简介

Hadoop是什么 Hadoop为分布式系统基础框架。主要解决海量数据的存储和海量数据的分析计算问题。 大数据解决的是海量数据的采集、存储和计算。 Hadoop三大发行版本 Apache 最原始最基础的版本,2006年诞生,开源; Cloudera 内部封装Apache&am…

HTML中华传统文化题材网页《中国民间年画》HTML+CSS+JavaScript

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Redis网络模型-IO多路复用

Redis网络模型-IO多路复用 系统IO交互 IO多路复用概念 文件描述符(File Descriptor):简称FD,是一个从O开始递增的无符号整数,用来关联Linux中的一个文件。在Linux中,一切皆文件,例如常规文件、视频、硬件设备等&…

卷积神经网络的卷积层

文章目录卷积核正向传播反向传播参考文献附录卷积核 笔者在学会了如何运用卷积神经网路后,突然有一天萌发了很多问题,为什么要用卷积核?卷积核具体完成了什么工作?带着这些疑问,笔者开始查询资料,其中一段视…

MongoDB入门与实战-第一章-介绍

目录参考一、介绍二、概念三、预留默认库四、 MongoDB 集合五、 MongoDB 视图六、MongoDB 索引七、MongoDB ObjectIdMongoDB 性能问题定位方式参考 MongoDB 基础浅谈 一、介绍 MongoDB是为快速开发互联网Web应用而设计的数据库系统。 MongoDB的设计目标是极简、灵活、作为We…

[vue3] Tree/TreeSelect树形控件使用

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

【定语从句练习题】That 、who、whom、省略

1. 改写训练 1.I’d like to speak to the person that wrote this letter. 主 2.The tomatoes that I bought yesterday. 宾,可以去掉 3.Joe’s got a motorbike that can do 200Km an hour. 主 4.Is that the computer that doesn’t work. 主 5.Those are trous…

[操作系统笔记]处理机调度

调度算法 名称英文作业调度进程调度说明特点先来先服务First-come first-served, FCFS适用适用按作业到达先后顺序(即优先考虑等待时间最长的)非抢占式短作业优先short job first, SJF适用适用作业越短(即运行时间越短)优先级越高…

SpringBoot异常:Process finished with exit code 0 | Tomcat服务没有启动 | 无法通过浏览器访问

错误信息 启动springBoot项目后,打印信息如下 意思是:我该执行的程序已执行完毕,并正常退出。 希望提示:打印Tomcat已在8080端口启动,可以通过浏览器访问,如果是这个问题,继续向下浏览&#xf…

标准库类型string和vector

一、命名空间 std::cinstd就是命名空间, 这个的含义是 :编译器应该从操作符左侧的名字所示的作用域std中去寻找cin。 另一种方式就是在开头显式进行说明: using std::cin;这样一来后续就不用再去在每条语句中显式说明了。 需要注意的是&…

微信小程序实战 wx.showNavigationBarLoading(),下拉动画配置无效

文章目录前情提要原因分析实战解析最后前情提要 下拉刷新一定是移动端常用操作,微信小程序官方集成了下拉刷新监听函数onPullDownRefresh(),以及显示下拉动画apiwx.showNavigationBarLoading(),但是我们在初次接触这个api发现,调用该函数动画不显示&…