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中字符串前面加r的作用
Jun 04 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
python中format()函数的简单使用教程
Mar 14 Python
python实现决策树、随机森林的简单原理
Mar 26 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
Python实现多属性排序的方法
Dec 05 Python
线程安全及Python中的GIL原理分析
Oct 29 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
python实现三种随机请求头方式
Jan 05 Python
python中threading和queue库实现多线程编程
Feb 06 Python
Python 使用dict实现switch的操作
Apr 07 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
亲密接触PHP之PHP语法学习笔记1
2006/12/17 PHP
php中常用编辑器推荐
2007/01/02 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php中引用符号(&)的使用详解
2013/11/13 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
JsChart组件使用详解
2018/03/04 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
Antd下拉选择,自动匹配功能的实现
2020/10/24 Javascript
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
python执行get提交的方法
2015/04/29 Python
python写日志封装类实例
2015/06/28 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
python使用scrapy发送post请求的坑
2018/09/04 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
中科软测试工程师面试题
2012/06/16 面试题
cf搞笑广告词
2014/03/14 职场文书
中餐厅经理岗位职责
2014/04/11 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
小学大队委竞选口号
2015/12/25 职场文书
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android