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

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

Django 聚合函數的具體使用

瀏覽:93日期: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高清一区| 99pao成人国产永久免费视频 | 欧美午夜精彩| 日韩1区2区| 婷婷综合六月| 亚洲二区免费| 亚洲少妇在线| 亚洲免费专区| 国产精品亚洲人成在99www| 国产精品一区二区av日韩在线| 久久av日韩| 国产精品福利在线观看播放| 国产一区二区三区四区五区| 免费高潮视频95在线观看网站| 欧美成a人免费观看久久| 欧美日韩国产一区二区三区不卡| 亚洲在线观看| 欧美在线看片| 国产精品chinese| 欧美国产中文高清| 91成人福利| 精品国产a一区二区三区v免费| 国产aⅴ精品一区二区四区| 日韩电影免费在线观看| 激情欧美丁香| 午夜精品福利影院| 麻豆成人在线观看| a日韩av网址| 国产综合欧美| 精品久久久网| 国产精品一页| 一区二区三区网站| 亚洲精品三级| **爰片久久毛片| 日韩av首页| 久久国产免费看| 国产精品sm| 97精品国产一区二区三区| 欧美1级日本1级| 美国三级日本三级久久99| 午夜精品婷婷| 国产传媒在线| 欧美色图国产精品| 日韩精品乱码av一区二区| 国产亚洲电影| 欧美 日韩 国产一区二区在线视频 | 午夜宅男久久久| 国产精品自拍区| 亚洲电影在线一区二区三区| 日本视频一区二区| 99精品视频在线| 91国内精品| 欧美+亚洲+精品+三区| 国产三级一区| 国产99亚洲| 国产精品美女久久久久久不卡| 国产综合亚洲精品一区二| 国产精品网站在线看| 99亚洲视频| 国产精品高颜值在线观看| 视频一区在线播放| 91亚洲自偷观看高清| 亚洲精品高潮| 999国产精品| 国产福利亚洲| 免费在线观看一区二区三区| 久久一区二区三区电影| 国产自产自拍视频在线观看| 免费看黄色91| av资源亚洲| 91欧美极品| 最新日韩av| 岛国av免费在线观看| 91精品日本| 99在线精品免费视频九九视| 国产精品一区免费在线| 国产午夜精品一区二区三区欧美 | 亚洲五月婷婷| 久草精品视频| 亚洲精品女人| 久久人人88| 成人一区不卡| 久久99蜜桃| 日韩精品视频一区二区三区| 激情欧美日韩一区| 欧美精品99| 日本成人在线一区| 国产精品外国| 亚洲无线一线二线三线区别av| 国产一区二区三区黄网站| 欧美日一区二区三区在线观看国产免| 麻豆精品蜜桃视频网站| 精品一级视频| 日韩精品中文字幕一区二区| 91欧美日韩| 欧美好骚综合网| 亚洲夜间福利| 精品一区二区三区亚洲| 欧美国产三级| 成人日韩av| 国产色噜噜噜91在线精品| 欧美日韩四区| 国产精品字幕| 色一区二区三区| 久久影视三级福利片| 青草综合视频| 日韩一区精品| 亚洲精品四区| 最新国产精品视频| 亚洲网址在线观看| 亚洲日产国产精品| 亚洲精品乱码日韩| 天堂精品久久久久| 日韩精品一区二区三区中文在线 | 国产黄色精品| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲高清久久| 欧美日韩一区二区综合| 国产 日韩 欧美一区| 久久精品成人| 激情视频一区二区三区| 性欧美69xoxoxoxo| 亚洲激情另类| 亚洲欧美综合| 亚洲二区三区不卡| 美女黄网久久| 久久av在线| 亚洲精品影视| 国产日产一区| 精品视频高潮| 亚洲综合电影| 日韩一区亚洲二区| 99久久婷婷这里只有精品| 久久中文字幕二区| 亚洲综合不卡| 亚洲字幕久久| 欧美片第1页综合| 精品久久免费| 日韩精品dvd| 欧美一区二区三区激情视频| 亚洲永久字幕| 日韩精品高清不卡| 日韩视频一区| 日韩成人精品一区二区三区 | 天堂va蜜桃一区二区三区| 日本va欧美va精品发布| 亚洲欧美不卡| 欧美久久久网站| 日韩高清一级| 日本色综合中文字幕| 欧美激情福利| 另类专区亚洲| 色综合www| 日韩一区二区久久| 日韩av一区二区三区| 精品国产精品国产偷麻豆| 日本国产精品| 亚洲精品无播放器在线播放| 国产精品成人国产| 久久精品影视| 午夜精品影视国产一区在线麻豆| 国产精品流白浆在线观看| 视频二区不卡| 中文一区一区三区免费在线观 | 午夜久久tv| 亚洲精品美女91| 日本vs亚洲vs韩国一区三区二区| 在线一区二区三区视频| 久久精品免费一区二区三区 | 欧美日韩99| 国产99精品| 欧美成人a交片免费看| 国产99久久| 日韩不卡免费视频| 伊人久久亚洲热| 欧美精品导航| 一区福利视频| 欧美在线观看天堂一区二区三区| 日韩欧美午夜| 日本欧美国产| 日本在线视频一区二区| 麻豆精品视频在线观看| 欧美日韩国产在线观看网站| 日韩精品首页| 中文字幕在线视频久| 欧美激情另类| 麻豆成全视频免费观看在线看| 波多视频一区| 久久国产欧美| 日韩在线一二三区| 日本精品一区二区三区在线观看视频| 狠狠色综合网| 亚洲人成毛片在线播放女女| 日韩不卡在线观看日韩不卡视频| 国产亚洲精aa在线看| 日本久久精品| 日韩激情啪啪|