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常用列表数据结构小结
Aug 06 Python
PyTorch上实现卷积神经网络CNN的方法
Apr 28 Python
Python闭包执行时值的传递方式实例分析
Jun 04 Python
Python中return self的用法详解
Jul 27 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
python Django中models进行模糊查询的示例
Jul 18 Python
djano一对一、多对多、分页实例代码
Aug 16 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
Python直接赋值及深浅拷贝原理详解
Sep 05 Python
pytorch中的model=model.to(device)使用说明
May 24 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
咖啡界又出新概念,无需咖啡豆的分子咖啡
2021/03/03 咖啡文化
PHP 使用redis简单示例分享
2015/03/05 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
[原创]php正则删除img标签的方法示例
2017/05/27 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
详解javascript事件冒泡
2016/01/09 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
js中setTimeout的妙用--防止循环超时
2017/03/06 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
python如何在终端里面显示一张图片
2016/08/17 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
python创建文件备份的脚本
2018/09/11 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Python3 读取Word文件方式
2020/02/13 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
医学护理系毕业生求职信
2013/10/01 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
工会文体活动总结
2015/05/07 职场文书
2015年国庆节演讲稿范文
2015/07/30 职场文书
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫