1. 程式人生 > 其它 >【Django】admin後臺自定義匯出全部資料並且返回自定義中文名

【Django】admin後臺自定義匯出全部資料並且返回自定義中文名

    def export_as_excel_all(self, request, queryset):

        # queryset 是前端勾選的

        meta = self.model._meta
        field_names_raw = [field.name for field in meta.fields]  # 原資料表字段
        field_names = []

        # 自定義文字名
        for data in field_names_raw:
            field_names.append(models.Username._meta.get_field(data).verbose_name)

        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) # 將模型欄位名作為標題寫入第一行 # 遍歷的物件 queryset = models.Username.objects.all()
for obj in queryset: for field in field_names_raw: data = [f'{getattr(obj, field)}' for field in field_names_raw] # 將模型屬性值的文字格式組成列表 ws.append(data) # 寫入模型屬性值 wb.save(response) # 將資料存入響應內容 return response export_as_excel_all.short_description
= '匯出全部' # 該動作在admin中的顯示文字