【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中的显示文字
复制代码

 

posted @   PythonNew_Mr.Wang  Views(257)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示