Django Admin中增加導出Excel功能

參考:
https://www.cnblogs.com/yoyo008/p/9232805.html

在使用Django Admin時, 對於列表我們有時需要提供數據導出功能, 如下圖:

增加導出Excel功能

在Django Admin中每個模型的Admin類(繼承至admin.ModelAdmin), 我們可以通過actions增加支持的動作, 值為當前類存在的方法名, 例如:

.......

@admin.register(Issue)

class IssueAdmin(admin.ModelAdmin):

......

actions = ['export_as_excel'] # 增加動作, 對應相應的方法名

def export_as_csv(self, request, queryset): # 具體的導出csv方法的實現

pass


export_as_excel.short_description = '導出Excel' # 該動作在admin中的顯示文字

導出Excel方法詳細實現如下:

from openpyxl import Workbook

....

def export_as_excel(self, request, queryset):

meta = self.model._meta # 用於定義文件名, 格式為: app名.模型類名

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) # 將模型字段

龍騰原創

聯繫作者:xiaowanzi02620

Django Admin中增加導出Excel功能


分享到:


相關文章: