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交换变量
Sep 06 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
详解详解Python中writelines()方法的使用
May 25 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
python3实现暴力穷举博客园密码
Jun 19 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
Jun 27 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
Python之Matplotlib文字与注释的使用方法
Jun 18 Python
python实现图片,视频人脸识别(dlib版)
Nov 18 Python
python实现代码审查自动回复消息
Feb 01 Python
Python内置的数据类型及使用方法
Apr 13 Python
python数字图像处理:图像的绘制
Jun 28 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
php flush类输出缓冲剖析
2008/10/19 PHP
smarty简单入门实例
2014/11/28 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
扩展String功能方法
2006/09/22 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
老生常谈jquery id选择器和class选择器的区别
2017/02/12 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
jQuery中常用动画效果函数知识点整理
2018/08/19 jQuery
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
解决vue的router组件component在import时不能使用变量问题
2020/07/26 Javascript
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python实现复制大量文件功能
2019/08/31 Python
极简的HTML5模版
2015/07/09 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
金融专业个人求职信
2013/09/22 职场文书
中年人生感言
2014/02/04 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
北京天坛导游词
2015/02/12 职场文书
远程教育学习心得体会
2016/01/23 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android