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

django 利用Q對象與F對象進行查詢的實現

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

Q對象:

優(yōu)勢:可以實現 與|或|非 組合查詢。

給幾個小例子就一目了然了:

Book.objects.filter(id__gt=2,bread__gt=20) #and關系
Book.objects.filter(Q(bread__gt=20) & Q(id__gt=2)) #and關系
Book.objects.filter(Q(bread__gt=20) | Q(id__gt=2)) #or關系
Book.objects.filter.(~Q(id=3)) # ~表示not,查詢編號不等于3的圖書

F對象:

優(yōu)勢:能利用當前obj的值進行比較。

Book.objects.filter(bread__gt=F('bcomment')*2) #閱讀量大于評論量的圖書*2,可以在F對象上使用算術運算

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

實際開發(fā)中遇到的問題:

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

比如下面這個是我實際開發(fā)中遇到的問題:

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表中的三個多對多字段的外鍵。

結果可能讓意想不到,結果是一個包含多個重復值的查詢集,置于為什么會重復,我并沒用做深入調查,但是這在django ORM多表查詢中會經常遇到,這就是網上說的一般的情況下,QuerySet 中不會出來重復的,重復是很罕見的,但是當跨越多張表進行檢索后,結果并到一起,可能會出來重復的值。

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

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

補充知識:Django中models利用ORM對Mysql進行查表的語句

一: all() 返回模型類對應表格中所有的數據。

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

三:filter():參數寫查詢條件,返回滿足條件 QuerySet 集合數據。

條件格式:

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

1)判斷是否存在

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

2)模糊查詢

>查詢書名包含傳的圖書

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

>查詢書名不為空的圖書

BookInfo.objects.filter(btitle__isnull=False)

>查詢圖書id在1,3,5的圖書

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

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

BookInfo.objects.filter(id__gte=3)

>日期查詢

BookInfo.objects.filter(bpub_date__year = 1980)

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

四、exclude()返回不滿足條件的數據

BookInfo.objects.exclude(id=3)

五 F對象

作用:用于類屬性之間的比較條件。

用法:

1:導入 from django.db.models import F

2 :舉例 BookInfo.objects.filter(bread_gt = F('bcomment') (查詢閱讀量大于評論量的圖書)

3: 舉例 BookInfo.objects.filter(bread__gt=F(‘bcomment')*2) (查詢閱讀量等于2倍評論量的圖書)

六 Q對象

作用:用于查詢時的邏輯條件??梢詫?Q 對象進行&|~操作。

用法:

1:導入 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

作用:對查詢結果進行排序。

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對象與F對象進行查詢的實現就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 使用Python實現壓縮pptx的功能

    使用Python實現壓縮pptx的功能

    當處理大型PPTX文件時,其中包含許多高分辨率照片時,文件大小可能會顯著增加,為了解決這個問題,我們可以使用Python編程語言和python-pptx庫來壓縮PPTX文件中的照片,下面我們就來看看具體操作吧
    2024-02-02
  • Python坐標軸操作及設置代碼實例

    Python坐標軸操作及設置代碼實例

    這篇文章主要介紹了Python坐標軸操作及設置代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python DES加密實現原理及實例解析

    Python DES加密實現原理及實例解析

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

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

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

    Python XML模塊數據解析與生成利器的使用掌握

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

    Pycharm 2to3配置,python2轉python3方式

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

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

    這篇文章主要介紹了Django開發(fā)中復選框用法,結合實例形式分析了Django基于ajax的復選框遍歷、提交及后臺數據庫查詢等相關操作技巧,需要的朋友可以參考下
    2018-03-03
  • Python的Flask項目中獲取請求用戶IP地址 addr問題

    Python的Flask項目中獲取請求用戶IP地址 addr問題

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

    TensorFlow打印輸出tensor的值

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

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

    眾所周知,在完成論文相關工作時畫圖必不可少,如損失函數圖、熱力圖等是非常常見的圖,在本文中,總結了這兩個圖的畫法,下面給出了完整的代碼,開箱即用,感興趣的同學可以自己動手嘗試一下
    2023-09-09

最新評論

隆德县| 札达县| 武胜县| 会理县| 东明县| 普宁市| 山东省| 上犹县| 洪雅县| 双城市| 高台县| 淳化县| 三原县| 兰州市| 永靖县| 怀远县| 莱阳市| 湖南省| 长寿区| 云梦县| 三亚市| 贵德县| 宝兴县| 古丈县| 高要市| 竹山县| 怀集县| 剑川县| 韶山市| 大田县| 新龙县| 大荔县| 浠水县| 武邑县| 兴义市| 亳州市| 蓝田县| 姜堰市| 茌平县| 瑞金市| 湘乡市|