首頁(yè)常見(jiàn)問(wèn)題正文

Python培訓(xùn):F對(duì)象與Q對(duì)象的區(qū)別

更新時(shí)間:2022-07-19 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

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

  1.F對(duì)象

  使用F對(duì)象的語(yǔ)法格式如下:

F(字段名)

  假設(shè)現(xiàn)有模型類BookInfo,該模型類中的字段readount表示閱讀量,字段commentcount表示評(píng)論量,利用F對(duì)象查詢閱讀量大于評(píng)論量的圖書(shū),示例如下:

from django.db.models import F
BookInfo.objects.filter(readcount_gt=F('commentcount'))

  F對(duì)象支持加、減、乘、除、求余、次方運(yùn)算。例如,查詢閱讀量等于2倍評(píng)論量的圖書(shū)。示例如下:

BookInfo.objects.filter(readcount=F('commentcount')*2)

  2.Q對(duì)象

  使用Q對(duì)象的語(yǔ)法格式如下:

Q(屬性名_運(yùn)算符=值)

  例如,查詢閱讀量大于20并且編號(hào)小于3的圖書(shū)。示例如下:

BookInfo.objects.filter(readcount___gt=20,id___lt=3)

  Q對(duì)象可與邏輯運(yùn)算符“|”和“&”結(jié)合實(shí)現(xiàn)復(fù)雜的數(shù)據(jù)庫(kù)查詢。例如,使用Q對(duì)象查詢閱讀量大于20且編號(hào)小于等于5的圖書(shū)。示例如下:

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

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

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


分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!