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進行g(shù)roup by
場景:三個模型分別為教師,學(xué)生,課程。一個教師可主講多門課程,但一門課程只能由一個教師主講,即教師和課程是一對多的關(guān)系。一個學(xué)生可選多門課程,一門課程可被多個學(xué)生選,即學(xué)生和教師為多對多的關(guān)系。
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='學(xué)生姓名')
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='選課學(xué)生')
def __unicode__(self):
return self.name
選取某教師主講的pk最小的課:
Teacher.objects.annotate(Min('course__pk')).get(pk=2).course__pk__min
多對多也一樣
這個例子不太典型,比如快遞和其狀態(tài)兩張表是一對多關(guān)系,查最新的狀態(tài)就可以使用這種方法(也可以在有新的狀態(tài)時在快遞表中每次更新最新的狀態(tài))
以上這篇Django框架models使用group by詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用Python將圖片批量轉(zhuǎn)化成素描圖的過程記錄
萬能的Python真的是除了不會生孩子,其他的還真不在話下,下面這篇文章主要給大家介紹了關(guān)于如何利用Python將圖片批量轉(zhuǎn)化成素描圖的相關(guān)資料,需要的朋友可以參考下2021-08-08
Python mplfinance庫繪制金融圖表實現(xiàn)數(shù)據(jù)可視化實例探究
mplfinance(Matplotlib Finance),它是基于Matplotlib的庫,專門用于創(chuàng)建金融圖表和交互式金融數(shù)據(jù)可視化,本文將深入介紹?mplfinance,包括其基本概念、功能特性以及如何使用示例代碼創(chuàng)建各種金融圖表2024-01-01
對Python random模塊打亂數(shù)組順序的實例講解
今天小編就為大家分享一篇對Python random模塊打亂數(shù)組順序的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
Pandas如何通過np.array函數(shù)或tolist方法去掉數(shù)據(jù)中的index
這篇文章主要介紹了Pandas如何通過np.array函數(shù)或tolist方法去掉數(shù)據(jù)中的index問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
pyecharts動態(tài)軌跡圖的實現(xiàn)示例
這篇文章主要介紹了pyecharts動態(tài)軌跡圖的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-04-04

