【django】 django後台管理 導出excel表
- 2020 年 4 月 7 日
- 筆記
from django.contrib import admin # Register your models here. import xlwt from django.http import HttpResponse from dal import models # Register your models here. from openpyxl import Workbook class FundAdmin(admin.ModelAdmin): actions = ["export_as_excel"] list_display = ('title', 'name','type','unit','status','create_time') list_filter = ['title', 'name','type','unit','status','create_time',] def export_as_excel(self, request, queryset): print("queryset",queryset) meta = self.model._meta # 用於定義文件名, 格式為: app名.模型類名 print("meta",meta) field_names = [field.name for field in meta.fields] # 模型所有字段名 response = HttpResponse(content_type='application/msexcel') # 定義響應內容類型 response['Content-Disposition'] = f'attachment; filename={meta}.xlsx' # 定義響應數據格式 wb = Workbook() # 新建Workbook ws = wb.active # 使用當前活動的Sheet表 ws.append(field_names) # 將模型字段名作為標題寫入第一行 for obj in queryset: # 遍歷選擇的對象列表 print(obj) for field in field_names: data = [f'{getattr(obj, field)}' for field in field_names] # 將模型屬性值的文本格式組成列表 ws.append(data) # 寫入模型屬性值 wb.save(response) # 將數據存入響應內容 return response export_as_excel.short_description = '導出Excel' # 該動作在admin中的顯示文字 admin.site.register(models.Fund, FundAdmin)