2022-09-30 F對象: 在shell中是用於兩個有關聯的屬性之間的查詢。 使用實例: 查詢書籍表中閱讀量大於評論量的記錄 前提,進入pycharm,進入虛擬環境,進入shell環境。 首先,要使用F對象,那麼就需要導入F對象 from django.db.models import F 後進 ...
2022-09-30
F對象:
在shell中是用於兩個有關聯的屬性之間的查詢。
使用實例:
查詢書籍表中閱讀量大於評論量的記錄
前提,進入pycharm,進入虛擬環境,進入shell環境。
首先,要使用F對象,那麼就需要導入F對象
from django.db.models import F
後進行查詢
BookInfo1.objects.filter(readcount__gt = F("commentcount"))
-------------------------------
Q對象
同F對象類似,可用於“與”,“或”,“非”的查詢
首先導入包含Q的模塊,
from django.db.models import Q
(1)查詢id>2而且閱讀量大於100的圖書
BookInfo1.objects.filter(Q(id__gt = 2)&Q(readcount__gt = 100))
(2)查詢id>8或者閱讀量大於50的圖書
BookInfo1.objects.filter(Q(id__gt = 8)|Q(readcount__gt = 50))
(3)查詢不包含編號為3的圖書
BookInfo1.objects.filter(~Q(id__gt = 3))
------------------------
聚合函數
聚合函數的類型有5個,Sum,Max,Min,Avg,Count
實例:
首先,需要導入包含的聚合函數的模塊,如果使用Sum,就導入Sum,例:
from django.db.models import Sum
查詢書籍表中閱讀量的總和
BookInfo1.objects.aggregate(Sum("readcount"))
註:此處的聚合函數使用的是“aggregate”,而不是“aggredation”。是一個動詞。
---------------------------------
排序
在Django項目中的表單中,排序預設是按照 升序 進行排序。如果想要進行降序的話,就在要排序的屬性前面加上一個負號。
實例:
在書籍表中按照閱讀量進行排序,預設為升序
BookInfo1.objects.all().order_by("readcount")
按照降序排列
BookInfo1.objects.all().order_by("-readcount")