中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

django中的聚合函數、分組函數以及F、Q查詢的用法介紹

發布時間:2021-09-05 01:05:26 來源:億速云 閱讀:128 作者:chen 欄目:開發技術

本篇內容介紹了“django中的聚合函數、分組函數以及F、Q查詢的用法介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

聚合 是aggreate(*args,**kwargs),通過QuerySet 進行計算。做求值運算的時候使用

分組 是annotate(*args,**kwargs),括號里是條件,遇到 每什么的時候就要分組,

先從models 導入要用到的函數

from django.db.models import Min,Avg,Max,Sum

def aggregate(request):

  #求所有書籍的平均價格
  ret11 = Book.objects.all().aggregate(Avg("price"))
  # print(ret11)#{'price__avg': 51.975}

  #求所有書籍的最高價
  ret12 = Book.objects.all().aggregate(MaxPrice=Max('price'))
  # print(ret12)#{'MaxPrice': Decimal('100.00')}

  #egon 出版過書籍的最高價格
  p = Book.objects.filter(authors__name='egon').aggregate(Max('price'))

  print(p)#{'price__max': Decimal('100.00')}



  #分組 annotate()
  #每一個作者出版過的書的最高價 ,
  #解析,按照作者的名字分組,就要用到values,顯示的是字段的名字,

  b1 = Book.objects.values('authors__name').annotate(Max('price'))

  print(b1)
  #<QuerySet [{'authors__name': 'egon', 'price__max': Decimal('100.00')},
      # {'authors__name': 'alex', 'price__max': Decimal('100.00')},
      # {'authors__name': 'yuan', 'price__max': Decimal('100.00')},
      # {'authors__name': 'oldboy', 'price__max': Decimal('100.00')}]># 四個作者都關聯了同一本書,而這本書又是最高價
#每個出版社出版的最低價格的書籍

b2 = Book.objects.values('publish__name').annotate(Min('price'))
print(b2)
#<QuerySet [{'publish__name': '北京出版社', 'price__min': Decimal('100.00')},
# {'publish__name': '河下出版社', 'price__min': Decimal('45.00')},
# {'publish__name': '清華出版社', 'price__min': Decimal('39.90')},
# {'publish__name': '人民出版社', 'price__min': Decimal('23.00')}]>

F Q 查詢

F,主要是做查詢

Q查詢 可以做組合條件的查詢 & 是 與 ,|(管道符) 或,~ 非

def FAndQ(request):
 
  #給每本書漲價10元,
  #用sql語句寫 update book set price=price+10
 
  #F,主要是做查詢
  # Book.objects.all().update(price=F('price')+10)
 
  #查詢書籍是富開頭,并且價格大于30的書籍 ,逗號 可以做 與 的關系查詢
  b4 = Book.objects.filter(title__startswith="富",price__gt=30)
  # print(b4)#<QuerySet [<Book: 富爸爸>]>
 
 
  #Q查詢 可以做組合條件的查詢 & 是 與 ,|(管道符) 或,~ 非
 
  ##查詢書籍是富開頭,或價格大于30的書籍
  b5 = Book.objects.filter(Q(title__startswith="富") | Q(price__gt=60))
  # print(b5)
  #<QuerySet [<Book: Linux>, <Book: 項塔蘭>, <Book: 追風箏的人>, <Book: 富爸爸>]>
 
  #組合查詢,以富開頭,價格大于60 ,或者id大于5的書籍
  b6 = Book.objects.filter(Q(title__startswith="富")&Q(price__gt=60)|Q(id__gt=5))
  #print(b6)#<QuerySet [<Book: 富兒子>]>
  #
  #查詢條件如果不加Q,就要放到最后面,
  b7 = Book.objects.filter(Q(price__gt=60) | Q(id__gt=5),title__startswith="富")
  # print(b7)
 
  # ~ 取反的意思
  b8 = Book.objects.filter(Q(title__startswith="富") & ~Q(price__gt=60) | Q(id__gt=5))
  print(b8)

“django中的聚合函數、分組函數以及F、Q查詢的用法介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

巴楚县| 兴城市| 淮安市| 彭州市| 区。| 松滋市| 金寨县| 扎兰屯市| 中方县| 沅陵县| 元阳县| 新郑市| 得荣县| 新昌县| 曲阳县| 淳化县| 香河县| 磐安县| 南丰县| 儋州市| 晴隆县| 固原市| 天津市| 门头沟区| 江阴市| 通山县| 安丘市| 红原县| 华阴市| 邵阳县| 普陀区| 油尖旺区| 襄汾县| 边坝县| 扶沟县| 丰镇市| 历史| 黄陵县| 沙洋县| 灵川县| 称多县|