日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Django 聚合函數的具體使用

瀏覽:102日期:2024-09-06 09:00:56
前言

orm模型中的聚合函數跟MySQL中的聚合函數作用是一致的,也有像Sum、Avg、Count、Max、Min,接下來我們逐個介紹

聚合函數

所有的聚合函數都是放在django.db.models下面。并且聚合函數不能夠單獨的執行,聚合函數是通過aggregate方法來實現的。在說明聚合函數的用法的時候,都是基于以下的模型對象來實現的。

class Author(models.Model): '''作者模型''' name = models.CharField(max_length=100) age = models.IntegerField() email = models.EmailField() class Meta: db_table = ’author’ class Publisher(models.Model): '''出版社模型''' name = models.CharField(max_length=300) class Meta: db_table = ’publisher’ class Book(models.Model): '''圖書模型''' name = models.CharField(max_length=300) pages = models.IntegerField() price = models.FloatField() rating = models.FloatField() author = models.ForeignKey(Author,on_delete=models.CASCADE) publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE) class Meta: db_table = ’book’ class BookOrder(models.Model): '''圖書訂單模型''' book = models.ForeignKey('Book',on_delete=models.CASCADE) price = models.FloatField() class Meta: db_table = ’book_order’Avg

Avg:求平均值。比如想要獲取所有圖書的價格平均值。那么可以使用以下代碼實現。

from django.db.models import Avg result = Book.objects.aggregate(Avg(’price’)) print(result)

以上的打印結果是:

{'price__avg':23.0}

其中price__avg的結構是根據field__avg規則構成的。如果想要修改默認的名字,那么可以將Avg賦值給一個關鍵字參數。示例代碼如下:

from django.db.models import Avg result = Book.objects.aggregate(my_avg=Avg(’price’)) print(result)

以上的打印結果為

{'my_avg':23}

Count

Count:獲取指定的對象的個數。示例代碼如下:

from django.db.models import Count result = Book.objects.aggregate(book_num=Count(’id’))

以上的result將返回Book表中總共有多少本圖書。

Count類中,還有另外一個參數叫做distinct,默認是等于False,如果是等于True,那么將去掉那些重復的值。比如要獲取作者表中所有的不重復的郵箱總共有多少個,那么可以通過以下代碼來實現:

from djang.db.models import Countresult = Author.objects.aggregate(count=Count(’email’,distinct=True))Max和Min

Max和Min:獲取指定對象的最大值和最小值。比如想要獲取Author表中,最大的年齡和最小的年齡分別是多少。那么可以通過以下代碼來實現:

from django.db.models import Max,Minresult = Author.objects.aggregate(Max(’age’),Min(’age’))

如果最大的年齡是90,最小的年齡是10。那么以上的result將為:

{'age__max':90,'age__min':10}

Sum

Sum:求指定對象的總和。比如要求圖書的銷售總額。那么可以使用以下代碼實現:

from djang.db.models import Sumresult = Book.objects.annotate(total=Sum('bookorder__price'))

以上的代碼annotate的意思是給Book表在查詢的時候添加一個字段叫做total,這個字段的數據來源是從BookOrder模型的price的總和而來。

aggregate和annotate的區別

相同點:這兩個方法都可以執行聚合函數。

不同點:

aggregate返回的是一個字典,在這個字典中存儲的是這個聚合函數執行的結果。而annotate返回的是一個QuerySet對象,并且會在查找的模型上添加一個聚合函數的屬性。 aggregate不會做分組,而annotate會使用group by子句進行分組,只有調用了group by子句,才能對每一條數據求聚合函數的值。F表達式:

F表達式: 動態的獲取某個字段上的值。并且這個F表達式,不會真正的去數據庫中查詢數據,他相當于只是起一個標識的作用。比如想要將原來每本圖書的價格都在原來的基礎之上增加10元,那么可以使用以下代碼來實現:

from django.db.models import FBook.objects.update(price=F('price')+10) Q表達式

Q表達式:使用Q表達式包裹查詢條件,可以在條件之間進行多種操作。與/或非等,從而實現一些復雜的查詢操作。例子如下:

查找價格大于100,并且評分達到4.85以上的圖書:

# 不使用Q表達式的 books = Book.objects.filter(price__gte=100,rating__gte=4.85) # 使用Q表達式的 books = Book.objects.filter(Q(price__gte=100)&Q(rating__gte=4.85))

查找價格低于100元,或者評分低于4分的圖書:

books = Book.objects.filter(Q(price__gte=100)&Q(rating__gte=4.85))

獲取價格大于100,并且圖書名字中不包含”傳“字的圖書:

books = Book.objects.filter(Q(price__gte=100)&~Q(name__icontains=’傳’))

到此這篇關于Django 聚合函數的具體使用的文章就介紹到這了,更多相關Django 聚合函數內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
视频在线观看一区二区三区| 国产伦精品一区二区三区千人斩| 亚洲人成毛片在线播放女女| 首页国产欧美日韩丝袜| 国产精品日本| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲精品进入| 精品久久97| 香蕉久久精品| 亚洲v天堂v手机在线| 欧美综合精品| 日韩av二区| 久久九九电影| 婷婷亚洲五月色综合| 日本91福利区| 加勒比视频一区| 成人啊v在线| 丝袜诱惑制服诱惑色一区在线观看 | 一区二区国产精品| 欧美日本不卡高清| 日韩精品不卡一区二区| 亚洲少妇自拍| 久久精品99久久久| 久久男女视频| 欧美日韩中出| 欧美日韩在线二区| 日本不卡视频一二三区| аⅴ资源天堂资源库在线| 国产一区二区高清| 美女在线视频一区| 精品欠久久久中文字幕加勒比| 自由日本语亚洲人高潮| 国产精品蜜月aⅴ在线| 久久精品一区二区不卡| 亚洲男人在线| 欧美日韩一区二区三区视频播放| 日韩精品1区2区3区| 丝袜av一区| 国产精品毛片视频| 视频一区二区欧美| 天堂√中文最新版在线| 日韩精品欧美大片| 亚洲女同中文字幕| 精品国产亚洲日本| 日本中文字幕不卡| 私拍精品福利视频在线一区| 欧美另类中文字幕| 亚洲精品888| 97视频热人人精品免费| 日韩av字幕| 国产精品女主播一区二区三区| 国产在线不卡一区二区三区| 综合激情网...| 欧美国产91| 麻豆网站免费在线观看| 国产情侣一区在线| 一区二区三区网站| 91精品国产调教在线观看| 久久不卡国产精品一区二区| 四虎精品一区二区免费| 国产精品99一区二区三区| 青青草国产成人99久久| 蜜桃国内精品久久久久软件9| 国产一区二区三区四区大秀| 日本亚州欧洲精品不卡| 91精品电影| 日韩欧美不卡| 国产不卡人人| 国内精品麻豆美女在线播放视频| 视频精品一区| 美女日韩在线中文字幕| 久久精品免费一区二区三区| 欧美亚洲三级| 亚洲综合图色| 免费在线看一区| 精品一区二区三区中文字幕视频| 日本 国产 欧美色综合| 日韩精品专区| 国产精品蜜芽在线观看| 久久伊人亚洲| 麻豆国产91在线播放| 中文字幕成人| 丝瓜av网站精品一区二区| 99xxxx成人网| 性色一区二区| 免费的成人av| 亚洲精品乱码| 五月亚洲婷婷 | jizzjizz中国精品麻豆| 国产精品久久久久77777丨| 欧美天堂在线| 国产欧美欧美| 精品久久免费| 日韩理论视频| 亚洲一级二级| 六月婷婷一区| 亚洲1区在线| 日韩中文字幕区一区有砖一区| 在线精品视频在线观看高清| 亚洲欧美日韩国产| 亚洲2区在线| 国产伦理一区| 理论片午夜视频在线观看| 成人在线网站| 六月丁香综合| 欧美日韩中文| 国产精东传媒成人av电影| 丰满少妇一区| 日韩不卡视频在线观看| 国产一区日韩一区| 亚洲精品成人| 日韩av在线免费观看不卡| 亚洲精选91| 国产日韩一区二区三区在线播放| 国产欧美一区| 91免费精品| 久久久精品午夜少妇| 免费久久99精品国产自在现线| 亚洲天堂日韩在线| 亚洲欧洲日韩精品在线| 久久不见久久见免费视频7 | 天堂va蜜桃一区二区三区| 日韩成人午夜精品| 国产一区一一区高清不卡| 91精品国产乱码久久久久久久| 久久亚洲成人| 日韩综合小视频| 国产精品99一区二区三| 99成人在线| 免费一区二区三区在线视频| 欧美亚洲国产精品久久| 日本a口亚洲| 日韩av福利| 男人的天堂久久精品| 久久精品国产网站| 99久久亚洲精品蜜臀| 日本色综合中文字幕| 精品香蕉视频| 激情综合网五月| 亚洲精品欧美| 国产精品久久久久久久久免费高清 | 午夜精品免费| 久久国产麻豆精品| 国产在线不卡一区二区三区| 激情五月色综合国产精品| 国产精品综合| 鲁大师影院一区二区三区| 日本a级不卡| 国产韩日影视精品| 荡女精品导航| 日韩一区二区三区四区五区| 伊人久久av| 日韩激情视频网站| 成人av二区| 成人一区而且| 国产精品一线天粉嫩av| 久久av在线| 91精品一区二区三区综合| 久久国产精品免费一区二区三区| 99视频在线精品国自产拍免费观看| 久久中文精品| 97成人在线| 欧美日韩激情在线一区二区三区| 国产精品多人| 日韩国产精品久久久| 日韩视频在线一区二区三区 | 亚洲精品一区二区妖精| 国产中文字幕一区二区三区| 日韩激情网站| 日韩精品一级中文字幕精品视频免费观看| 欧美少妇精品| 麻豆成人综合网| 久久亚洲风情| 波多野结衣一区| 三级在线看中文字幕完整版| 国产欧美日韩精品一区二区免费| 美国三级日本三级久久99| 久久久五月天| 亚洲黄色中文字幕| 精品美女视频 | 丝袜a∨在线一区二区三区不卡| 蜜桃av在线播放| 91国内精品| 亚洲精品黄色| 蜜桃久久久久久| 亚洲免费一区二区| 欧美日韩国产免费观看视频| 伊伊综合在线| 日韩综合一区| 精品三级久久久| 国产高清精品二区| 国产乱码精品一区二区三区亚洲人 | 成人自拍av| 吉吉日韩欧美| www.九色在线| 日本蜜桃在线观看视频| 国产中文在线播放| 国产夫妻在线| 三上悠亚国产精品一区二区三区 | 精品国产亚洲一区二区三区大结局|