更新時間:2022-07-19 來源:黑馬程序員 瀏覽量:
之前的查詢都是字段與常量值進行比較,如果在查詢過程中需要比較表中的字段,那么可以使用django.db.models中的F對象;查詢時可能涉及一個或多個查詢條件,此時可以使用Q對象。
1.F對象
使用F對象的語法格式如下:
F(字段名)
假設(shè)現(xiàn)有模型類BookInfo,該模型類中的字段readount表示閱讀量,字段commentcount表示評論量,利用F對象查詢閱讀量大于評論量的圖書,示例如下:
from django.db.models import F BookInfo.objects.filter(readcount_gt=F('commentcount'))
F對象支持加、減、乘、除、求余、次方運算。例如,查詢閱讀量等于2倍評論量的圖書。示例如下:
BookInfo.objects.filter(readcount=F('commentcount')*2)
2.Q對象
使用Q對象的語法格式如下:
Q(屬性名_運算符=值)
例如,查詢閱讀量大于20并且編號小于3的圖書。示例如下:
BookInfo.objects.filter(readcount___gt=20,id___lt=3)
Q對象可與邏輯運算符“|”和“&”結(jié)合實現(xiàn)復雜的數(shù)據(jù)庫查詢。例如,使用Q對象查詢閱讀量大于20且編號小于等于5的圖書。示例如下:
BookInfo.objects.filter(Q(readcount___gt=140)&Q(id___lte=5))
Q對象還支持取反操作,其格式為“~QQ”。例如,查詢id不等于3的圖書。示例如下:
BookInfo.objects.filter(~Q(id=3))