zoukankan      html  css  js  c++  java
  • django admin 导出数据简单示例

    借鉴博客:https://www.lijinlong.cc/django/djxs/2101.html

    具体代码实现:

    class TipReport(admin.ModelAdmin):
        actions = ['saveexcel']
        list_display = ('tiptype', 'enabled', 'get_tag','get_content')
        search_fields = ('get_tag', 'tiptype')
        list_per_page = 500
    
        def get_tag(self, obj):
            if obj.tags.all():
                tag_list = [i.name for i in obj.tags.all()]
                return ','.join(tag_list)
            else:
                return '-'
    
        get_tag.short_description = '小贴士标签'
    
        def get_content(self, obj):
            if obj.content:
                return obj.content
            elif obj.image:
                return mark_safe('<a href="%s">%s</a>' % (obj.image.url, obj.image.url))
            else:
                return '-'
    
        get_content.short_description = '内容'
    
        def saveexcel(self, request, queryset):
            Begin = xlwt.Workbook()
            sheet = Begin.add_sheet('小贴士记录')
            cols = 0
            for query in queryset:
                sheet.write(cols, 0, str(query.tiptype))
                sheet.write(cols, 1, str(query.enabled))
                # for i in unicode(query.tags.all()):
                sheet.write(cols, 2, unicode(query.tags.all()))
                print type(query.content)
                sheet.write(cols, 3, unicode(query.content))
    
                cols += 1
    
            Begin.save('{}'.format("result.xls"))
            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('{}'.format("result.xls")))
            response['Content-Type'] = 'application/octet-stream'
            response['Content-Disposition'] = 'attachment;filename="{}"'.format("result.xls")
            return response
        saveexcel.short_description = '导出数据'
    admin.site.register(Tip, TipReport)
  • 相关阅读:
    【贴吧】计算器代码注释
    简单理解面向对象思维
    [转载]编程哲理
    Android SDK Manager无法更新的解决方案
    CSS选择器
    javascript arguments参数问题
    html垂直居中
    x64系统WSC注册方法
    SharePoint Server 2013安装
    Asp Url汉字乱码的问题
  • 原文地址:https://www.cnblogs.com/haiyan123/p/9223530.html
Copyright © 2011-2022 走看看