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实现根据月份和日期得到星座的方法
Mar 27 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
深入理解Python爬虫代理池服务
Feb 28 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
python实现蒙特卡罗方法教程
Jan 28 Python
python+selenium 点击单选框-radio的实现方法
Sep 03 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
Feb 20 Python
Python 里最强的地图绘制神器
Mar 01 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 中的str_replace 函数总结
2007/04/27 PHP
php正则表达式(regar expression)
2011/09/10 PHP
php检测文件编码的方法示例
2014/04/25 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
ExtJs的Date格式字符代码
2010/12/30 Javascript
jquery遍历筛选数组的几种方法和遍历解析json对象
2013/12/13 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
javascript比较两个日期相差天数的方法
2015/07/23 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
2017/03/15 Javascript
jQuery判断邮箱格式对错实例代码讲解
2017/04/12 jQuery
echarts饼图扇区添加点击事件的实例
2017/10/16 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
python发送HTTP请求的方法小结
2015/07/08 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
知识就是力量演讲稿
2014/09/13 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书