django把mysql导出dbf_Django import export实现数据库导入导出方式

本文介绍了如何使用Django的django-import-export库来实现数据的导入导出,支持csv、xls、json、html等多种格式。首先通过pip安装库,然后在settings.py中配置,接着在models.py创建数据模型,再在admin.py创建Resource和Admin,最后展示了如何自定义导出Excel文件。
摘要由CSDN通过智能技术生成

使用django-import-export库,导入导出数据,支持csv、xls、json、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界面实现导入导出

88280d83897019aee4f0c61b4e551fd3.png

自定义导出 方式 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实现数据库导入导出方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值