91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django框架models使用group by詳解

發布時間:2020-10-14 06:29:06 來源:腳本之家 閱讀:243 作者:tianweitao 欄目:開發技術

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詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑水县| 错那县| 秭归县| 绵竹市| 临潭县| 平阳县| 建昌县| 汝城县| 雷州市| 屯留县| 和龙市| 万荣县| 灵山县| 青海省| 陇西县| 沙河市| 海门市| 夏津县| 汶川县| 鄂托克旗| 和静县| 迁西县| 岗巴县| 苗栗县| 正安县| 昌宁县| 尼玛县| 恩平市| 阜阳市| 永和县| 贵港市| 昌都县| 遂溪县| 永安市| 黔西县| 泰顺县| 姚安县| 安泽县| 汕头市| 保山市| 万全县|