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)
  • 相关阅读:
    Opencv算法运行时间
    markdown转换为html
    jQuery类名添加click方法
    box-sizing 盒子模型不改变大小
    nodejs 发送get 请求 获取博客园文章列表
    6、Python3中的常用正则表达式
    5、Python3打印函数名之__name__属性
    4、reduce函数工具的使用
    3、Python字符编码区分utf-8和utf-8-sig
    9、QT QLineEdit 密码模式
  • 原文地址:https://www.cnblogs.com/haiyan123/p/9223530.html
Copyright © 2011-2022 走看看