日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Django中Q查詢及Q()對象 F查詢及F()對象用法

瀏覽:261日期:2024-09-27 13:01:18

Django Q/F

#1 環境

Python3.7.3

Django==2.0.6

#2 開始

#2.1 django F()表達式

每次獲取times當前的值,再+1,這樣需要將times值取出,存到內存中

obj = models.Test.objects.get(name='cox')obj.times = obj.times + 1obj.save()

雖然 obj.times = F(“times”) + 1

看起來像常規的Python為實例屬性賦值,但實際上它是一個描述數據庫上操作的SQL結構

當Django遇到要給F()實例,它會覆蓋標準的Python運算符來創建一個封裝的SQL表達式;在這個例子中,指示數據庫增加由 obj.times 表示的數據庫字段。

無論 obj.times 的值是或曾是什么,Python永遠不需要知道?完全由數據庫來處理。Python通過Django的F()類做的所有事情僅是參考某個字段創建SQL語法來描述操作。

obj = models.Test.objects.get(name='cox')obj.times = F('times') + 1obj.save()

因此,F()可以通過以下方式提供性能優勢

直接在數據庫中操作而不是python

減少一些操作所需的數據庫查詢次數

#2.2 F()操作在 obj.save() 后會持續存在

如果times的值是1,那么經過n次save()之后,times的值是2

obj = models.Test.objects.get(name='cox')obj.times = obj.times + 1obj.save()obj.save()obj.save()

如果times的值是1,那么經過n次save()之后,times的值是1+n,而不是2,就是因為F()操作在 obj.save() 后會持續存在

obj = models.Test.objects.get(name='cox')obj.times = F('times') + 1obj.save()obj.save()obj.save()

#2.3 F()再過濾(filter)中的使用

獲取表中收入(input_price)大于支出(output_price)的數據

models.Test.objects.filter(input_price__gt=F('output_price'))

Django支持F()對象使用加、減、乘、除、取模和冪運算等算術操作,兩個操作數可以是常數或F()對象

models.Test.objects.filter(input_price__gt=F('output_price')*2)

models.Test.objects.filter(input_price__gt=F('output_price')+F('output_price'))

你還可以在F()對象中使用雙下劃線標記來跨越關聯關系。 帶有雙下劃線的F()對象將引入任何需要的join 操作以訪問關聯的對象

models.Test.objects.filter(authors__name=F(’blog__name’))

對于date 和date/time 字段,你可以給它們加上或減去一個timedelta對象

from datetime import timedelta

models.Test.objects.filter(mod_date__gt=F(’pub_date’) + timedelta(days=3))

#2.4 Django Q()表達式

當我們在查詢的條件中需要組合條件時(例如兩個條件“且”或者“或”)時。我們可以使用Q()查詢對象

from django.db.models import Qmodels.Author.objects.filter(Q(name='cox') | Q(name='Tom')) # 獲取在Author表中,name等于cox和name等于cox的所有數據models.Author.objects.filter(Q(name='cox') & Q(age=12))# 獲取在Author表中,name等于cox并且age等于12的所有數據

#2.5 Q()傳入條件查詢

q1 = Q()q1.connector = ’OR’q1.children.append((’name’, 'cox'))q1.children.append((’name’, 'Tom'))q1.children.append((’name’, 'Jeck')) models.Author.objects.filter(q1) # 在Author表中,name等于cox/Tom/Jeck的所有數據

con = Q()q1 = Q()q1.connector = ’OR’q1.children.append((’name’, 'cox'))q1.children.append((’name’, 'Tom'))q1.children.append((’name’, 'Jeck'))q2 = Q()q2.connector = ’OR’q2.children.append((’age’, 12))con.add(q1, ’AND’)con.add(q2, ’AND’)models.Author.objects.filter(con) # 在Author表中,name等于cox/Tom/Jeck的 并且 滿足age等于12 的所有數據

#2.6 Q()非

在Q()語句中,~代表非

models.Author.objects.filter(~Q(name='cox')) # 獲取在Author表中,name不等于cox的所有數據

補充知識:Django 中 Models 的 F()和 Q()函數

1、F() ---- 專門取對象中某列值的操作

F對象允許Django在未實際鏈接數據的情況下具有對數據庫字段的值的引用。

通常情況下我們在更新數據時需要先從數據庫里將原數據取出后方在內存里,然后編輯某些屬性,最后提交。

all = BookInfo.objects.filter(auth='小明')for b in all: price = b.price b.price = price + 10 b.save # 使用F對象來計算BookInfo.objects.filter(auth='小明').update(price=F('price')+10)

2、Q() ---- 對對象的復雜查詢

Q對象是Django對model查詢中所使用的關鍵字參數進行封裝后的一個對象。

Q對象可以通過 &(與)、 |(或)、 ~(非)運算來組合生成不同的Q對象,便于在查詢操作中靈活地運用。

from django.db.models import Q# 并且條件:與條件查詢models.User.objects.filter(條件1,條件2,條件n..)models.User.objects.filter(Q(username=’老王’) & Q(userpass=’admin’))# 或者條件:或條件models.User.objects.fliter(Q(username=’老王’) | Q(username=’老李’))# 取反條件models.User.objects.filter(~Q(username=’老王’))models.User.objects.exclude(username=’老王’)

以上這篇Django中Q查詢及Q()對象 F查詢及F()對象用法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产96在线亚洲| 国产精品va| 精品一区在线| 91精品婷婷色在线观看| 国产精品伦理久久久久久| 国产精品草草| 欧美成a人片免费观看久久五月天| 国产一卡不卡| 99久精品视频在线观看视频| 久久中文字幕av| 欧美日韩第一| 奶水喷射视频一区| 国产精品亚洲人成在99www | 亚洲精品网址| 在线成人直播| 视频精品一区二区| 国产图片一区| 日韩在线网址| 国产剧情一区| 成人免费一区| 久久久影院免费| 久久久久午夜电影| 午夜在线一区二区| 亚洲3区在线| 欧美日韩在线精品一区二区三区激情综合| 日韩精品导航| 国产欧美日韩一级| 精品国产亚洲一区二区三区在线 | 国产一区日韩一区| 噜噜噜久久亚洲精品国产品小说| 亚洲久久视频| 国产精品一区二区三区www| 国产精品网在线观看| 老司机免费视频一区二区三区| 福利精品一区| 欧美天堂亚洲电影院在线观看| 亚洲18在线| 美女高潮久久久| 久久精品国产大片免费观看| 亚洲精品伊人| 日韩成人a**站| 视频一区视频二区中文字幕| 久久99久久久精品欧美| 欧美日韩一二| 久久国产生活片100| 日韩在线高清| 亚洲久久视频| 亚洲国产欧美日本视频| 亚洲午夜电影| 久久精品99久久久| 国产一区二区视频在线看| 国内激情久久| 91国内精品| 91精品一区二区三区综合在线爱| 免费视频一区二区| 精品视频一区二区三区在线观看| 欧美日韩在线观看视频小说| 免费久久精品视频| 国产伊人久久| 在线精品观看| 桃色一区二区| 亚洲视频电影在线| 国产精品99视频| 91久久黄色| 欧美精品国产| 成人精品天堂一区二区三区| 午夜亚洲福利| 国际精品欧美精品| 香蕉久久久久久久av网站| 国产精品久久久免费| 久久国产毛片| 国产日本久久| 国内精品福利| 国产精品一区二区三区四区在线观看 | caoporn视频在线| 视频在线在亚洲| 不卡一二三区| 91午夜精品| 国产精品免费看| 国产一区二区三区网| 综合激情一区| 免费不卡中文字幕在线| 精品久久97| 69堂免费精品视频在线播放| 五月婷婷六月综合| 成人一二三区| 日韩高清成人在线| 国产一区91| 亚洲国产福利| 国产精品密蕾丝视频下载| 免费人成精品欧美精品 | 麻豆国产精品视频| 亚洲aⅴ网站| 在线亚洲精品| 久久精品高清| 日韩欧美一区二区三区在线视频| 国产精品极品在线观看| 天堂va欧美ⅴa亚洲va一国产| 亚洲免费精品| 电影天堂国产精品| 久久99蜜桃| 一区二区91| 黄色亚洲大片免费在线观看| 蜜臀国产一区| 在线手机中文字幕| 久久精品国产99国产精品| 免费在线观看成人| 久久久精品午夜少妇| 久久av偷拍| 国产精品视频一区二区三区 | 韩日一区二区三区| 日韩久久电影| 国产自产自拍视频在线观看| 国产精品.xx视频.xxtv| 欧美私人啪啪vps| 久久最新视频| 日韩专区一卡二卡| 六月婷婷一区| 99视频精品免费观看| 美女亚洲一区| 欧美特黄一区| 午夜在线精品| 久久高清免费观看| 免费黄网站欧美| 91久久久精品国产| 日韩精品看片| 欧美sss在线视频| 日日夜夜免费精品视频| 热久久免费视频| 爽爽淫人综合网网站| 欧美成人国产| 国产午夜精品一区二区三区欧美 | 好吊一区二区三区| 91成人精品视频| 九九久久电影| 亚洲欧美网站| 亚洲va久久| 91伊人久久| 日韩午夜黄色| 午夜视频精品| 免费在线成人网| 亚州av乱码久久精品蜜桃| 亚洲欧美久久久| 中文一区一区三区免费在线观 | 亚洲精品无播放器在线播放| 亚洲一区二区免费在线观看| 亚洲人成在线影院| 91大神在线观看线路一区| 国产日产一区| 久久一区视频| 理论片午夜视频在线观看| 亚洲成人精品| 蘑菇福利视频一区播放| 亚洲一级淫片| 国产色噜噜噜91在线精品| 91精品福利观看| 麻豆视频久久| 日韩一区二区三区精品 | 久久国产亚洲| 男女男精品视频网| 91成人在线精品视频| 国产精品任我爽爆在线播放| 久久精品天堂| 久久精品国语| 日本欧洲一区二区| 国产精品久久久亚洲一区| 欧美sss在线视频| 美女网站一区| 日韩欧美美女在线观看| 国产精品观看| 亚洲成av在线| 亚洲精品乱码| 麻豆一区二区三区| 日韩一区二区中文| 日韩国产91| 国产资源在线观看入口av| 欧美日韩四区| 国产日韩欧美高清免费| 免费福利视频一区二区三区| 首页亚洲欧美制服丝腿| 亚洲精品日本| 亚洲夜间福利| 天堂av一区| 日韩欧美午夜| 亚洲欧洲免费| 色黄视频在线观看| 日韩精品高清不卡| 欧美日韩一区二区综合 | 久久久久亚洲精品中文字幕| 欧美 日韩 国产精品免费观看| 日韩视频一二区| 日韩电影二区| 日韩高清不卡一区二区| 日韩欧美一区二区三区免费看| 日韩影院二区| 欧美黑人做爰爽爽爽| 欧美日韩国产高清| 精品国产一区二区三区av片| 天堂成人国产精品一区| 成人亚洲一区|