当前位置: 首页 > article >正文

django orm的Q和~Q的数据相加并不一定等于总数

以下代码纯粹是为了举例子,并假设sex性别字段可以为NULL, 实际上不会这么写

all_count = Students.objects.all().count()  # 1000

# 男性数量
male_count = Students.objects.filter(sex='男')  #  600
# 非男性数量
female_count = Students.objects.filter(~Q(sex='男'))  #  300

本义是获取非男性的学生数量, 但是发现他们加起来的数量并不是总数1000,
于是定位问题,发现存在为NULL的情况,性别信息缺失导致该字段可能为NULL, 在sql语句中,NULL不是一个实际的值,它不能直接用于比较操作,如使用=号判断,如果你想检查一个字段是否为NULL,你应该使用IS NULL 或 IS NOT NULL来判断统计,而在Django orm中可以做如下修改:

非男性数量

female_count = Students.objects.filter(~Q(sex='男') | Q(sex=None))  # 400

http://www.kler.cn/a/289152.html

相关文章:

  • 【AI日记】24.11.14 复习和准备 RAG 项目 | JavaScript RAG Web Apps with LlamaIndex
  • 【CVPR2024】2024年CVPR的3D 目标检测的综述(还在补充中)
  • RabbitMQ高效的消息队列中间件原理及实践
  • 测试工程师简历「精选篇」
  • MySQL系列之如何在Linux只安装客户端
  • 相机光学(四十二)——sony的HDR技术
  • Golang | Leetcode Golang题解之第380题O(1)时间插入、删除和获取随机元素
  • [SDK]-按钮静态文本与编辑框控件
  • Vue-cli的使用
  • MySQL三大日志详解
  • 【区块链 + 房产建筑】透明建造系统 | FISCO BCOS应用案例
  • Windows安装docker,启动ollama运行open-webui使用AIGC大模型写周杰伦歌词
  • Unity实战案例 2D小游戏HappyGlass(模拟水珠)
  • 解剖学上合理的分割:通过先验变形显式保持拓扑结构|文献速递--基于深度学习的医学影像病灶分割
  • 域与活动目录
  • Mudo03 vscode配置相应的文件的搜索路径,库文件的搜索路径以及想要的链接库
  • 【Redis之一:下载安装Redis】
  • Java 入门指南:Java 并发编程 —— 并发容器 ConcurrentSkipListMap
  • P7492 [传智杯 #3 决赛] 序列
  • 【MATLAB源码-第157期】基于matlab的海马优化算法(SHO)机器人栅格路径规划,输出做短路径图和适应度曲线。
  • 【安卓13】解决HDMI OUT和耳机等设备接入时会解除静音问题
  • 算法day20|669. 修剪二叉搜索树、将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • 安嘉空间:智慧科技守护空间健康
  • C++基础多态
  • 爬虫练习(js逆向解密)
  • 中国水资源用水紧张程度数据(栅格/0.5度)