Django框架models使用group by详解

 更新时间:2020年03月11日 09:10:42   作者:tianweitao  
这篇文章主要介绍了Django框架models使用group by详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python3中eval函数用法使用简介

    python3中eval函数用法使用简介

    这篇文章主要介绍了python3中eval函数用法使用简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python绘制K线图之可视化神器pyecharts的使用

    Python绘制K线图之可视化神器pyecharts的使用

    这篇文章主要介绍了Python绘制K线图之可视化神器pyecharts的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • python使用数字与字符串方法技巧

    python使用数字与字符串方法技巧

    这篇文章主要介绍了python使用数字与字符串方法技巧,文章内容介绍详细具有一的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • 详解Python2.x中对Unicode编码的使用

    详解Python2.x中对Unicode编码的使用

    这篇文章主要介绍了详解Python2.x中对Unicode编码的使用,Python3中Unicode被作为默认的编码来使用,而在目前仍被广泛应用的Python2的版本中Unicode却是一个在使用中需要注意的地方,需要的朋友可以参考下
    2015-04-04
  • Python functools.lru_cache装饰器性能提升利器深入探究

    Python functools.lru_cache装饰器性能提升利器深入探究

    本文将详细介绍functools.lru_cache装饰器的原理、用法以及适当的场景,以帮助你更好地利用这一功能,它可以用来缓存函数的输出,以避免重复计算,从而显著提高程序的执行速度
    2024-01-01
  • python jieba分词并统计词频后输出结果到Excel和txt文档方法

    python jieba分词并统计词频后输出结果到Excel和txt文档方法

    本篇文章主要介绍了python jieba分词并统计词频后输出结果到Excel和txt文档方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • python解包概念及实例

    python解包概念及实例

    在本篇文章里小编给大家分享的是一篇关于python解包知识点总结,对此有兴趣的朋友们可以学习参考下。
    2021-02-02
  • flask与数据库的交互操作示例

    flask与数据库的交互操作示例

    这篇文章主要为大家介绍了flask与数据库的交互操作示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Django分组聚合查询实例分享

    Django分组聚合查询实例分享

    在本篇文章里小编给大家分享的是关于Django分组聚合查询实例内容,需要的朋友们可以参考下。
    2020-04-04
  • pandas数据分列实现分割符号&固定宽度

    pandas数据分列实现分割符号&固定宽度

    数据分列在数据处理中很常见,数据分列一般指的都是字符串分割,本文主要介绍了pandas数据分列实现分割符号&固定宽度,具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04

最新评论