首頁常見問題正文

Python培訓:F對象與Q對象的區(qū)別

更新時間:2022-07-19 來源:黑馬程序員 瀏覽量:

IT培訓班

  之前的查詢都是字段與常量值進行比較,如果在查詢過程中需要比較表中的字段,那么可以使用django.db.models中的F對象;查詢時可能涉及一個或多個查詢條件,此時可以使用Q對象。

  1.F對象

  使用F對象的語法格式如下:

F(字段名)

  假設現有模型類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對象可與邏輯運算符“|”和“&”結合實現復雜的數據庫查詢。例如,使用Q對象查詢閱讀量大于20且編號小于等于5的圖書。示例如下:

BookInfo.objects.filter(Q(readcount___gt=140)&Q(id___lte=5))

  Q對象還支持取反操作,其格式為“~QQ”。例如,查詢id不等于3的圖書。示例如下:

BookInfo.objects.filter(~Q(id=3))


分享到:
在線咨詢 我要報名
和我們在線交談!