Django框架models使用group by详解


Posted in Python onMarch 11, 2020

Django框架models使用group by详解:

首先,看下列代码:

UserData.objects.filter(hubid=sensorid,time__range=(time2,time1)).values('hour').annotate(sum_out=Sum('outdoor'), sum_in=Sum('indoor'), sum_eat=Sum('kitchen'), sum_wash=Sum('toilet')).order_by('hour')

上述代码相当于sql语句:

select Sum('outdoor') as sum_out,Sum('indoor') as sum_in,Sum('kitchen') as sum_eat,Sum('toilet') as sum_wash,hour
where hubid='sensorid' and (time between time1 and time2)
group by hour
order by hour asc

另外,在Django中order_by(‘hour')表示按生序排列,若要按降序排列,则使用order_by(‘-hour')

补充知识:django模型orm进行group by

场景:三个模型分别为教师,学生,课程。一个教师可主讲多门课程,但一门课程只能由一个教师主讲,即教师和课程是一对多的关系。一个学生可选多门课程,一门课程可被多个学生选,即学生和教师为多对多的关系。

class Teacher(models.Model):
  name = models.CharField(max_length=20, verbose_name='教师姓名')

  def __unicode__(self):
    return self.name


class Student(models.Model):
  name = models.CharField(max_length=20, verbose_name='学生姓名')

  def __unicode__(self):
    return self.name


class Course(models.Model):
  name = models.CharField(max_length=20, verbose_name='课程名')
  teacher = models.ForeignKey(Teacher, verbose_name='主讲人')
  student = models.ManyToManyField(Student, verbose_name='选课学生')

  def __unicode__(self):
    return self.name

选取某教师主讲的pk最小的课:

Teacher.objects.annotate(Min('course__pk')).get(pk=2).course__pk__min

多对多也一样

这个例子不太典型,比如快递和其状态两张表是一对多关系,查最新的状态就可以使用这种方法(也可以在有新的状态时在快递表中每次更新最新的状态)

以上这篇Django框架models使用group by详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python操作MySQL数据库9个实用实例
Dec 11 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
python Tkinter版学生管理系统
Feb 20 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
Django单元测试工具test client使用详解
Aug 02 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
django框架forms组件用法实例详解
Dec 10 Python
利用python实现平稳时间序列的建模方式
Jun 03 Python
Python错误的处理方法
Jun 23 Python
用python-webdriver实现自动填表的示例代码
Jan 13 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
python代码实现备忘录案例讲解
Jul 26 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 #Python
python 链接sqlserver 写接口实例
Mar 11 #Python
浅谈Python中range与Numpy中arange的比较
Mar 11 #Python
python读取当前目录下的CSV文件数据
Mar 11 #Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 #Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 #Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 #Python
You might like
smarty section简介与用法分析
2008/10/03 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
2016/12/08 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
基于Vue 2.0 监听文本框内容变化及ref的使用说明介绍
2018/08/24 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
matplotlib.pyplot画图 图片的二进制流的获取方法
2018/05/24 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
Python 处理图片像素点的实例
2019/01/08 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
详解HTML5中的标签
2015/06/19 HTML / CSS
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
介绍一下except的用法和作用
2015/01/22 面试题
绩效管理实施方案
2014/03/19 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
协议书的格式
2014/04/23 职场文书
青年志愿者活动总结
2014/04/26 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
老乡会致辞
2015/07/28 职场文书
电工生产实习心得体会
2016/01/22 职场文书
php字符串倒叙
2021/04/01 PHP
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
MySQL新手入门进阶语句汇总
2022/09/23 MySQL