【django admin 】汇总数据 自定义 列 数据之和

news/2025/3/18 17:17:15/文章来源:https://www.cnblogs.com/wanghong1994/p/18779309
# admin.py def changelist_view(self, request, extra_context=None):# 调用父类的 changelist_view 方法response = super().changelist_view(request, extra_context=extra_context)# =============>   定义当前页面 需要汇总的列名nameList = ['stock_cost_total', 'stock_cost']all_columns = [field.name for field in InventoryData._meta.fields if field.name != 'id']summary_list = []totals = {name: 0 for name in nameList}if hasattr(response, 'context_data'):result_list = response.context_data['cl'].result_listfor obj in result_list:for name in nameList:totals[name] += getattr(obj, name, 0)for column in all_columns:if column in totals:summary_list.append({column: round(float(totals[column]),2)})else:summary_list.append({column: 0})if extra_context is None:extra_context = {}extra_context['summary_list'] = summary_listprint("extra_context", extra_context)# =============>   定义当前页面 需要汇总的列名返回数据:
{'summary_list': [{'wid': 0}, {'product_id': 0}, {'sku': 0}, {'seller_id': 0}, {'fnsku': 0}, {'product_total': 0}, {'product_valid_num': 0}, {'product_bad_num': 0}, {'product_qc_num': 0}, {'product_lock_num': 0}, {'stock_cost_total': 950.85}, {'quantity_receive': 0}, {'stock_cost': 18.5}, {'product_onway': 0}, {'transit_head_cost': 0}, {'average_age': 0}]}接受数据页面:change_list.html
def changelist_view(self, request, extra_context=None):# 调用父类的 changelist_view 方法,获取 responseresponse = super().changelist_view(request, extra_context=extra_context)# =============>   定义过滤条件所有数据的  需要汇总的列名nameList = ['stock_cost_total', 'stock_cost']all_columns = [field.name for field in InventoryData._meta.fields if field.name != 'id']summary_list = []totals = {name: 0 for name in nameList}if hasattr(response, 'context_data'):# 获取完整的 QuerySet(包括所有搜索筛选后的数据)full_queryset = response.context_data['cl'].queryset# 遍历整个 QuerySet 计算总和for obj in full_queryset:for name in nameList:totals[name] += getattr(obj, name, 0)# 生成 summary_listfor column in all_columns:if column in totals:summary_list.append({column: round(float(totals[column]), 2)})else:summary_list.append({column: 0})if extra_context is None:extra_context = {}# 将计算结果添加到 extra_contextextra_context['summary_list'] = summary_listprint("extra_context", extra_context)# =============>   定义过滤条件所有数据的  需要汇总的列名# 重新调用 changelist_view,传入更新后的 extra_contextresponse = super().changelist_view(request, extra_context=extra_context)return response

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901019.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VISIO-visio2013激活工具亲测有效

如果觉得对您有帮助 还请点赞收藏,谢谢~ 通过网盘分享的文件:激活工具 链接: https://pan.baidu.com/s/1y4FDjp59CoXtcB70_q1slA?pwd=sky1 提取码: sky1

安装ubantu报错VMware Workstation 与 Device/Credential Guard 不兼容

报错问题解决 1、按下WIN+R打开运行,然后输入services.msc回车; 2、在服务中找到 HV主机服务,双击打开设置为禁用3、win+x,然后打开powershell(管理员)运行命令:bcdedit /set hypervisorlaunchtype off 4、重启电脑

如何在 Github 上获得 1000 star?

作为程序员,Github 是第一个绕不开的网站。我们每天都在上面享受着开源带来的便利,我相信很多同学也想自己做一个开源项目,从而获得大家的关注。然而,理想很丰满,现实却是开发了很久的项目仍然无人问津。 最近,我的一个项目获得了超过 1000 star 的成绩,我认为这是一个重…

生活-家电: 论“内卷文化” + 品牌 VS 品质:记一起“知名品牌” 因 “商品设计缺陷”的退货经历

论“内卷文化” 如有不对欢迎指正。 起初,我也不知道"什么是内卷",面对现象级的"内卷文化"兴起, 各地"卷王不断", 实则是"阶层固化", "富贵阶级 压榨 普通民众的"另一"代称"? "富商贵族"多了第一批…

菜鸡的LLM algorithm学习笔记(I)-transformer篇

Transformer 结构分为几个部分embedding,encoder,decoder以及output 1.embedding block作为对于模型输入的处理,首先将模型的输入进行向量化;如输入为“我想要吃一个苹果。”-->X: [[0,0,0,1,2,222,....], [2,2,3,4,5,...], [3,4,5,6,....], []....];接着经过positional…

2025低空经济写入政府工作报告:万亿蓝海如何重塑未来城市?

2025年政府工作报告首次将“低空经济”列为重点发展领域,标志着这一新兴产业正式上升为国家战略。从2021年首次写入《国家综合立体交通网规划纲要》,到2024年定位为“新增长引擎”,再到2025年全国超30个省份将其列入发展规划,低空经济正以“政策+技术+资本”三重驱动,开启…

AI大模型:重塑交通执法的“智慧之眼”

交通执法,曾是城市治理中最依赖人力的领域之一。而随着AI大模型技术的突破,一场“从人力到算力”的变革正在发生:青岛交警的“智法”系统每天自动筛查上万条违法线索,深圳交警的AI预审平台将废片率降低40%,成都的非机动车劝导系统斩获全国技术革新一等奖……这些场景背后,…

实现Vehicle类的不同版本理解封装

实现Vehicle类的不同版本理解封装 版本一没有数据隐藏的类创建一个Vehicle 类实现上面的 UML 类图。含有两个 public 属性:属性 解释load 车辆当前载货量maxLoad 车辆最大载货量含有一个公有的构造函数用于初始化最大载货量属性 maxLoamaxLoad。含有两个公有的函数:权限 数据…

KUKA库卡KR210机械手控制柜维修全攻略

在现代工业生产中,库卡机器人因其出色的性能和稳定性,已成为许多企业的首选。然而,即使是精密的设备,也难免会遇到KUKA机械手KR210故障。控制柜是机器人的“大脑”,负责接收和执行各种指令,控制机器人的运动、姿态和操作。 KUKA机械臂KR210控制器故障诊断 1. 电源故障:检…

ciscn暨长城杯 广东赛区 ISW阶段应急响应

ciscn暨长城杯 广东赛区 ISW阶段应急响应 题目介绍 小路是一名网络安全网管,据反映发现公司主机上有异常外联信息,据回忆前段时间执行过某些更新脚本(已删除),现在需要协助小路同学进行网络安全应急响应分析,查找木马,进一步分析,寻找攻击源头,获取攻击者主机权限获取…

初识Open3D

Step01初识Open3d 程序代码: import open3d as o3d #导入Open3d库 def main():#定义主函数box = o3d.geometry.TriangleMesh.create_box(width=3.0, height=2.0, depth=1.0)#创建一个长方体对象box.compute_vertex_normals() #计算法向量vis = o3d.visualization.Visualizer(…