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 22 Python
Windows下将Python文件打包成.EXE可执行文件的方法
Aug 03 Python
Python使用folium excel绘制point
Jan 03 Python
对Python w和w+权限的区别详解
Jan 23 Python
python字符串切割:str.split()与re.split()的对比分析
Jul 16 Python
python中的&&及||的实现示例
Aug 07 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
Python的Lambda函数用法详解
Sep 03 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Python3.8安装Pygame教程步骤详解
Aug 14 Python
Python中super().__init__()测试以及理解
Dec 06 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导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
2020/09/25 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
javascript 当前日期转化为中文的实现代码
2010/05/13 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
Nodejs监听日志文件的变化的过程解析
2019/08/04 NodeJs
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
python实现识别相似图片小结
2016/02/22 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python使用RNN实现文本分类
2018/05/24 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python文件写入write()的操作
2019/05/14 Python
python利用openpyxl拆分多个工作表的工作簿的方法
2019/09/27 Python
Django实现基于类的分页功能
2019/10/31 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
python中xlutils库用法浅析
2020/12/29 Python
pandas针对excel处理的实现
2021/01/15 Python
缅怀革命先烈演讲稿
2014/05/14 职场文书
办公室班子四风问题对照检查材料
2014/10/04 职场文书
2014年工程部工作总结
2014/11/25 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
班主任培训研修日志
2015/11/13 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
golang 语言中错误处理机制
2021/08/30 Golang