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中的显示文字