首页 > 其他分享 >django如何将视图的数据表下载下来?(包括数据过滤)

django如何将视图的数据表下载下来?(包括数据过滤)

时间:2024-02-26 17:44:50浏览次数:24  
标签:field df request queryset 视图 django 数据表 filterset cls

思路

关键:django的视图本身返回的是json数据,而pandas本身就可以对json数据形成excel输出。所以,现在的关键是如何拿到需要的json数据?

突破点:filterset还是serializers,都是可以支持手动使用的。

def generate_queryset_excel(queryset, filterset_cls, serializer_cls, request=None):
	if request is not None:
		# 手动filterset
		filterset = filterset_cls(
			request.GET,
			queryset=queryset,
		)
		# 手动serializers
		ser = serializer_cls(
			filterset.qs,
			many=True,
		)
	else:
		ser = serializer_cls(
			queryset,
			many=True,
		)
	rename_dict = {
		field: queryset.model._meta.get_field(field).verbose_name
		for field in serializer_cls.Meta.fields
		if field in dir(queryset.model)
	}
	df = pd.json_normalize(ser.data)
	df.index += 1
	df = df.rename(columns={
		**rename_dict,
		'version': '版本',
		'tab_page_name': '标签页',
		'developer_name': '开发人',
		'template_type_name': '模板类型',
		'requirement_document_files': '需求文档',
		'progress_display': '进度',
	})

	return df


class DownloadUserView(APIView):
	def get(self, request):
		df = generate_queryset_excel(UserInfoView.queryset, UserInfoFilterSet, UserInfoSerializer, request=request)
		io = BytesIO()
		df.to_excel(io)
		res = HttpResponse(io.getvalue(), content_type='application/octet-stream; charset=UTF-8')
		filename = f'用户信息_{get_now_time_str("%Y-%m-%d_%H_%M_%S")}.xlsx'.encode('utf8').decode('ISO-8859-1')
		res['Content-Disposition'] = f'attachment; filename={filename}'

		return res

标签:field,df,request,queryset,视图,django,数据表,filterset,cls
From: https://www.cnblogs.com/aiyablog/p/18028613

相关文章

  • Python Django适配dm8(达梦)数据库
    官方文档https://eco.dameng.com/document/dm/zh-cn/start/python-development.htmlDjango适配达梦https://blog.csdn.net/qq_35349982/article/details/132165581https://blog.csdn.net/weixin_61894388/article/details/126330168项目适配达梦升级或安装依赖Django==3......
  • django模型models常用字段24个以及参数17个简要说明
    一、常用字段1、models.AutoField自增列=int(11)如果没有的话,默认会生成一个名称为id的列,如果要显式的自定义一个自增列,必须设置primary_key=True。2、models.CharField字符串字段,必须设置max_length参数3、models.BooleanField布尔类型=tinyint(1)不能为空,可......
  • MySQL进阶语法【视图 触发器 事务 存储过程 流程控制】
    MySQL进阶语法【一】视图【1】概念在MySQL数据库中,视图(View)是虚拟的表,其内容是基于执行特定查询所得到的结果集。视图是通过查询来定义的,它可以包含一个或多个表中的特定列,也可以包含计算字段、聚合函数等。视图并不实际存储数据,而是动态地从基本表中获取数据并进行组合,每当......
  • 智慧安防平台easy1400视图平台设备级联操作指南
    在当今数字化时代,有效的内容管理和设备协同已经成为企业和组织运营的关键因素。内容图库作为信息存储和展示的核心,为企业提供了便捷的视觉内容管理解决方案。与此同时,设备级联技术实现了不同平台和设备之间的高效协同工作。本文将深入探讨内容图库和设备级联技术的应用及优势。 ......
  • 智慧安防平台easy1400视图平台用户登录及设备注册功能详解
    用户登录视图库平台后,首先会看到一个整洁的首页界面,上面清晰地展示了各种功能菜单和操作按钮。在这里,用户可以轻松地进行以下操作:添加采集设备:选择左侧的“采集设备”菜单,并点击“添加”按钮。系统会弹出一个对话框,要求用户填写设备ID、名称和用户口令等信息。请确保设备ID的11~1......
  • 【专题】2023年全球移动应用(非游戏)营销趋势白皮书报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35180原文出处:拓端数据部落公众号随着国内政策调整,移动APP业务前景充满不确定性,但这也为出海应用带来了新机遇。2023年,AI和短剧应用的崛起为出海行业注入了信心。随着用户需求增长和技术进步,这两个领域有望在2024年迎来更大发展。阅读原文,获取专......
  • 【专题】中国企业财务数字化转型白皮书报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32389原文出处:拓端数据部落公众号新冠疫情等对商业活动进行了重新塑造,并使金融活动在商业活动中的位置发生了变化。在可持续发展的时代背景下,财务人员需要适应新的工作模式,主动接受新的技术,将关注的重点从传统的财务报告范围拓展到可持续性、包容性......
  • django常用命令
    常用命令任务命令创建新项目django-admin.pystartprojectproject_name(注意:windows系统下请用django-adminstartprojectproject_name)创建新应用pythonmanage.pystartappapp_name(注意:你需要先cd进入创建的项目文件夹)检测模型变换,生成数据库同步脚......
  • django分页后过滤数据,要进行补全数据的方法
    项目开发中遇到一个问题:当分页后还要进行数据处理,可能导致原本分页返回的数据不足,那么需要从另外一页进行数据补全(也要数据进行过滤)。自己写了一个小的组件:defdata_paging(queryset,page,limit,deal_func=None,*args,**kwargs):#创建分页器对象paginator=......
  • 【专题】2024中国消费电子和家电行业趋势报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=35177原文出处:拓端数据部落公众号中国是全球消费电子和家用电器的重要制造基地和出口国,占据全球市场超过22%的销售份额。在亚太市场销量方面也占据重要地位。作为“世界工厂”,中国拥有庞大的电子制造和出口能力,涵盖智能手机、电脑、电视、消费类电......