最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

django 利用Q對(duì)象與F對(duì)象進(jìn)行查詢(xún)的實(shí)現(xiàn)

 更新時(shí)間:2020年05月15日 11:45:26   作者:藍(lán)綠色~菠菜  
這篇文章主要介紹了django 利用Q對(duì)象與F對(duì)象進(jìn)行查詢(xún)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

Q對(duì)象:

優(yōu)勢(shì):可以實(shí)現(xiàn) 與|或|非 組合查詢(xún)。

給幾個(gè)小例子就一目了然了:

Book.objects.filter(id__gt=2,bread__gt=20) #and關(guān)系
Book.objects.filter(Q(bread__gt=20) & Q(id__gt=2)) #and關(guān)系
Book.objects.filter(Q(bread__gt=20) | Q(id__gt=2)) #or關(guān)系
Book.objects.filter.(~Q(id=3)) # ~表示not,查詢(xún)編號(hào)不等于3的圖書(shū)

F對(duì)象:

優(yōu)勢(shì):能利用當(dāng)前obj的值進(jìn)行比較。

Book.objects.filter(bread__gt=F('bcomment')*2) #閱讀量大于評(píng)論量的圖書(shū)*2,可以在F對(duì)象上使用算術(shù)運(yùn)算

以前你可能經(jīng)常只進(jìn)行Book.objects.filter(bread__gt=20)這樣的查詢(xún) ,有了F對(duì)象你就可以和當(dāng)前obj的屬性值進(jìn)行比較了。

實(shí)際開(kāi)發(fā)中遇到的問(wèn)題:

如果事情都按照示例那樣進(jìn)行就好了,然而開(kāi)發(fā)中總會(huì)遇到一些坑。

比如下面這個(gè)是我實(shí)際開(kāi)發(fā)中遇到的問(wèn)題:

user = request.user
Interviewer.object.filter(Q(interviewer_1=user) | Q(interviewer_2=user) | Q(interviewer_3=user))

目的是想查一面或者二面或者三面的面試官包含user的面試。

其中interviewer_1、interviewer_2、interviewer_3是Interviewer表中的三個(gè)多對(duì)多字段的外鍵。

結(jié)果可能讓意想不到,結(jié)果是一個(gè)包含多個(gè)重復(fù)值的查詢(xún)集,置于為什么會(huì)重復(fù),我并沒(méi)用做深入調(diào)查,但是這在django ORM多表查詢(xún)中會(huì)經(jīng)常遇到,這就是網(wǎng)上說(shuō)的一般的情況下,QuerySet 中不會(huì)出來(lái)重復(fù)的,重復(fù)是很罕見(jiàn)的,但是當(dāng)跨越多張表進(jìn)行檢索后,結(jié)果并到一起,可能會(huì)出來(lái)重復(fù)的值。

那么要怎么解決這個(gè)問(wèn)題呢?很簡(jiǎn)單,后面加個(gè).distinct()作用就是去重。

user = request.user
Interviewer.object.filter(Q(interviewer_1=user) | Q(interviewer_2=user) | Q(interviewer_3=user)).distinct()

補(bǔ)充知識(shí):Django中models利用ORM對(duì)Mysql進(jìn)行查表的語(yǔ)句

一: all() 返回模型類(lèi)對(duì)應(yīng)表格中所有的數(shù)據(jù)。

二:get():返回表格中滿(mǎn)足條件的一條數(shù)據(jù),如果查到多條數(shù)據(jù),則拋異常:MultipleObjectsReturned,查詢(xún)不到數(shù)據(jù),則拋異常:DoesNotExist。

三:filter():參數(shù)寫(xiě)查詢(xún)條件,返回滿(mǎn)足條件 QuerySet 集合數(shù)據(jù)。

條件格式:

“模型類(lèi)屬性名” __條件名=值(此處模型類(lèi)屬性名為model里面的屬性名,不是數(shù)據(jù)庫(kù)里面表的字段名)

1)判斷是否存在

BookInfo.object.filter(id__exact=1)此處的__exact 可以省略

2)模糊查詢(xún)

>查詢(xún)書(shū)名包含傳的圖書(shū)

BookInfo.objects.filter(btitle__contains='傳')

>查詢(xún)書(shū)名不為空的圖書(shū)

BookInfo.objects.filter(btitle__isnull=False)

>查詢(xún)圖書(shū)id在1,3,5的圖書(shū)

BookInfo.objects.filter(id__in=[1,3,5])

>比較查詢(xún) gt lt(less than) gte(equal) lte

BookInfo.objects.filter(id__gte=3)

>日期查詢(xún)

BookInfo.objects.filter(bpub_date__year = 1980)

BookInfo.objects.filter(bpub_date__gt = date(1980,1,1))

四、exclude()返回不滿(mǎn)足條件的數(shù)據(jù)

BookInfo.objects.exclude(id=3)

五 F對(duì)象

作用:用于類(lèi)屬性之間的比較條件。

用法:

1:導(dǎo)入 from django.db.models import F

2 :舉例 BookInfo.objects.filter(bread_gt = F('bcomment') (查詢(xún)閱讀量大于評(píng)論量的圖書(shū))

3: 舉例 BookInfo.objects.filter(bread__gt=F(‘bcomment')*2) (查詢(xún)閱讀量等于2倍評(píng)論量的圖書(shū))

六 Q對(duì)象

作用:用于查詢(xún)時(shí)的邏輯條件??梢詫?duì) Q 對(duì)象進(jìn)行&|~操作。

用法:

1:導(dǎo)入 from django.db.models import Q

2: 舉例:

BookInfo.objects.filter(id__gt=3,bread__gt=30) 和 Book.objects.filter(Q(id__gt=3)&Q(bread__gt=3))

3:舉例:

BookInfo.objects.filter(Q(id__gt=3) | Q(bread__gt=30))

七 order_by 返回QuerySet

作用:對(duì)查詢(xún)結(jié)果進(jìn)行排序。

1:舉例 BookInfo.object.all().order_by("id")[正序]

2:舉例 BookInfo.object.all().order_by("-id")[倒序]

3:舉例:BookInfo.objects.filter(id__gt=3).order_by('-bread')

以上這篇django 利用Q對(duì)象與F對(duì)象進(jìn)行查詢(xún)的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python實(shí)現(xiàn)壓縮pptx的功能

    使用Python實(shí)現(xiàn)壓縮pptx的功能

    當(dāng)處理大型PPTX文件時(shí),其中包含許多高分辨率照片時(shí),文件大小可能會(huì)顯著增加,為了解決這個(gè)問(wèn)題,我們可以使用Python編程語(yǔ)言和python-pptx庫(kù)來(lái)壓縮PPTX文件中的照片,下面我們就來(lái)看看具體操作吧
    2024-02-02
  • Python坐標(biāo)軸操作及設(shè)置代碼實(shí)例

    Python坐標(biāo)軸操作及設(shè)置代碼實(shí)例

    這篇文章主要介紹了Python坐標(biāo)軸操作及設(shè)置代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python DES加密實(shí)現(xiàn)原理及實(shí)例解析

    Python DES加密實(shí)現(xiàn)原理及實(shí)例解析

    這篇文章主要介紹了Python DES加密實(shí)現(xiàn)原理及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • windows下python 3.6.4安裝配置圖文教程

    windows下python 3.6.4安裝配置圖文教程

    這篇文章主要為大家詳細(xì)介紹了windows下python 3.6.4安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python XML模塊數(shù)據(jù)解析與生成利器的使用掌握

    Python XML模塊數(shù)據(jù)解析與生成利器的使用掌握

    這篇文章主要為大家介紹了Python XML模塊數(shù)據(jù)解析與生成利器的使用實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Pycharm 2to3配置,python2轉(zhuǎn)python3方式

    Pycharm 2to3配置,python2轉(zhuǎn)python3方式

    這篇文章主要介紹了Pycharm 2to3配置,python2轉(zhuǎn)python3方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Django開(kāi)發(fā)中復(fù)選框用法示例

    Django開(kāi)發(fā)中復(fù)選框用法示例

    這篇文章主要介紹了Django開(kāi)發(fā)中復(fù)選框用法,結(jié)合實(shí)例形式分析了Django基于ajax的復(fù)選框遍歷、提交及后臺(tái)數(shù)據(jù)庫(kù)查詢(xún)等相關(guān)操作技巧,需要的朋友可以參考下
    2018-03-03
  • Python的Flask項(xiàng)目中獲取請(qǐng)求用戶(hù)IP地址 addr問(wèn)題

    Python的Flask項(xiàng)目中獲取請(qǐng)求用戶(hù)IP地址 addr問(wèn)題

    這篇文章主要介紹了Python的Flask項(xiàng)目中獲取請(qǐng)求用戶(hù)IP地址 addr問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • TensorFlow打印輸出tensor的值

    TensorFlow打印輸出tensor的值

    這篇文章主要介紹了TensorFlow打印輸出tensor的值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python使用matplotlib.pyplot畫(huà)熱圖和損失圖的代碼詳解

    Python使用matplotlib.pyplot畫(huà)熱圖和損失圖的代碼詳解

    眾所周知,在完成論文相關(guān)工作時(shí)畫(huà)圖必不可少,如損失函數(shù)圖、熱力圖等是非常常見(jiàn)的圖,在本文中,總結(jié)了這兩個(gè)圖的畫(huà)法,下面給出了完整的代碼,開(kāi)箱即用,感興趣的同學(xué)可以自己動(dòng)手嘗試一下
    2023-09-09

最新評(píng)論

哈密市| 吴旗县| 宁河县| 盐源县| 双柏县| 双柏县| 玛曲县| 乐陵市| 芒康县| 榆社县| 荔浦县| 甘泉县| 大城县| 华宁县| 广平县| 金川县| 友谊县| 乐平市| 南平市| 禹城市| 郧西县| 安庆市| 富顺县| 桂东县| 临洮县| 临汾市| 永仁县| 兴义市| 平潭县| 安国市| 揭东县| 东阿县| 龙井市| 甘洛县| 湘潭市| 航空| 兴和县| 紫云| 汝城县| 贡觉县| 无锡市|