Django import export实现数据库导入导出方式


Posted in Python onApril 03, 2020

使用django-import-export库,导入导出数据,支持csv、xls、json、html等格式

官网:http://django-import-export.readthedocs.io/en/latest/installation.html

1、安装django-import-export

pip install django-import-export

2、配置settings.py

INSTALLED_APPS = (
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'customer',
 'publisher',
 'import_export',
)

执行命令: python manage.py collectstatic

3、models.py 建立model

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

 def __unicode__(self):
  return self.name


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

 def __unicode__(self):
  return self.name


class Book(models.Model):
 name = models.CharField('Book name', max_length=100)
 author = models.ForeignKey(Author, blank=True, null=True)
 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 __unicode__(self):
  return self.name

4、在admin.py 创建Resource、对应的Admin

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


class BookResource(resources.ModelResource):

 class Meta:
  model = Book
  export_order = ('id', 'name', 'author', 'author_email', 'imported', 'click', 'published', 'price', 'categories')

@admin.register(Book)
class BookAdmin(ImportExportModelAdmin):
 list_display = ('name', 'author', 'author_email', 'imported', 'published', 'price', 'categories')
 search_fields = ('name', 'author','published')
 date_hierarchy = 'date' 
 resource_class = BookResource

export_order:设置导出字段的顺序

5、Django界面实现导入导出

Django import export实现数据库导入导出方式

自定义导出 方式 action 这种方式也推荐

import xlwt
#导出Excel
from django.http import StreamingHttpResponse
class AdminReport(admin.ModelAdmin):
 actions = ["saveexecl"]     # 自定义的action(导出到excel表格)
 list_display = ("id",'offer','day_time', 'idfa', 'submit_result_text', 'callback_result_text') # 显示的列
 search_fields = ('day_time','callback_result_text')  # 可以搜索的字段
 date_hierarchy = 'day_time'  # 按照日期显示
 list_filter = ('offer',)   # 过滤条件
 list_per_page = 500    # 每页显示500条,太多了可能会出现服务器崩掉的情况
 
 def saveexecl(self,request,queryset):
  Begin = xlwt.Workbook()
  sheet = Begin.add_sheet("response")
  cols = 0
  for query in queryset:
   # you need write colms      # 好像有个方法可以一次性写入所有列,记不清了,只能用这种简单的方法去实现
   sheet.write(cols,1,str(query.idfa))  # 写入第一列
   sheet.write(cols,2,str(query.day_time)) # 写入第二列
   sheet.write(cols,3,str(query.keyword))  # 写入第三列
   cols += 1
  Begin.save("%s" %(filename))
  def file_iterator(filename,chuck_size=512):
   with open(filename,"rb") as f:
    while True:
     c = f.read(chuck_size)
     if c:
      yield c
     else:
      break
  response = StreamingHttpResponse(file_iterator(filename))
  response['Content-Type'] = 'application/octet-stream'
  response['Content-Disposition'] = 'attachment;filename="{}"'.format("result.xls")
  return response
 saveexecl.short_description = "导出Excel"   # 按钮显示名字


admin.site.register(Report, AdminReport)  # 注册到admin

以上这篇Django import export实现数据库导入导出方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现将文本转换成语音的方法
May 28 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
详解Python3操作Mongodb简明易懂教程
May 25 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
tornado+celery的简单使用详解
Dec 21 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
Python脚本实现Zabbix多行日志监控过程解析
Aug 26 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Django用户身份验证完成示例代码
Apr 03 #Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 #Python
python 的topk算法实例
Apr 02 #Python
python torch.utils.data.DataLoader使用方法
Apr 02 #Python
Python基于stuck实现scoket文件传输
Apr 02 #Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
Apr 02 #Python
Pytorch 使用不同版本的cuda的方法步骤
Apr 02 #Python
You might like
提取HTML标签
2006/10/09 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
2013/08/07 PHP
smarty简单入门实例
2014/11/28 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python多线程实例教程
2014/09/06 Python
python里大整数相乘相关技巧指南
2014/09/12 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
python爬取微信公众号文章的方法
2019/02/26 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
python中自带的三个装饰器的实现
2019/11/08 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
python开发一款翻译工具
2020/10/10 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
法国时尚童装网站:Melijoe
2016/08/10 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
贯彻学习两会心得体会范文
2014/03/17 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
华山导游词
2015/02/03 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis
Go语言测试库testify使用学习
2022/07/23 Golang