成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:212日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
色综合久久综合中文综合网| 精品国产乱码久久久久久影片| 欧美性猛片aaaaaaa做受| 一区在线播放视频| 欧美一区1区三区3区公司| 91精品国产免费| 麻豆成人综合网| 91国在线观看| 午夜激情一区二区三区| 亚洲一区中文| 亚洲国产cao| 在线播放亚洲| 国产精品乱人伦| 激情久久久久久久| 国产精品网站在线观看| 黄色精品免费| 国产一区视频在线观看免费| 琪琪一区二区三区| 日韩va亚洲va欧美va久久| 久久精品卡一| 日韩国产欧美在线视频| 久久综合九色综合久99| 日韩av在线播放中文字幕| 久久蜜桃资源一区二区老牛| 日本aⅴ精品一区二区三区| 在线观看成人小视频| 视频一区国产视频| 欧美三电影在线| 久久精品噜噜噜成人av农村| 欧美午夜寂寞影院| 久国产精品韩国三级视频| 国产91精品露脸国语对白| 精品一区二区三区在线观看国产| 久久亚裔精品欧美| 日韩激情中文字幕| 欧美三日本三级三级在线播放| 久久精品国产网站| 欧美一区二区三区日韩| 99久久夜色精品国产网站| 中文在线一区二区| 一区二区精品在线| 夜夜嗨av一区二区三区网页 | 亚洲激情一区二区| 亚洲欧美日韩久久| 国产精品久久亚洲7777| 午夜精品久久久久久久久久久 | 久久精品国产久精国产| 欧美二区三区的天堂| 成人激情电影免费在线观看| 国产欧美一区二区三区沐欲| 日韩视频在线播放| 性欧美大战久久久久久久久| 欧美视频在线一区二区三区| 粉嫩一区二区三区性色av| 国产日产欧美精品一区二区三区| 日韩视频一区| 老司机免费视频一区二区| 精品久久久久久最新网址| 欧美日韩免费观看一区=区三区| 亚洲精品菠萝久久久久久久| 欧美色视频一区| 91同城在线观看| 亚洲六月丁香色婷婷综合久久| 欧美日韩综合色| 91免费版在线看| 亚洲成人自拍偷拍| 欧美一级一区二区| 亚洲第一黄网| 天堂精品中文字幕在线| 欧美日韩精品二区第二页| 99re这里只有精品视频首页| 亚洲精选视频免费看| 欧美亚洲一区二区三区四区| 色综合一区二区| 亚洲一级在线观看| 欧美一级生活片| 亚洲美女少妇无套啪啪呻吟| 精品一二三四区| 国产欧美综合在线| 久久综合九色综合欧美狠狠| 成人不卡免费av| 亚洲第一福利视频在线| 日韩一区二区三区在线视频| 在线观看日韩av电影| 麻豆91精品视频| 亚洲国产精华液网站w| 色婷婷激情综合| 欧美精品一区二区视频| 美女尤物国产一区| 国产欧美一区二区精品秋霞影院 | 农村妇女精品| 首页国产欧美日韩丝袜| 精品理论电影在线观看| 国产精品乱码| 懂色中文一区二区在线播放| 一二三四区精品视频| 欧美成人a在线| 色婷婷亚洲一区二区三区| 91免费版在线看| 久久超碰97中文字幕| 18欧美亚洲精品| 欧美一区二区性放荡片| 亚洲综合另类| 欧美99久久| 九九精品视频在线看| 日韩久久一区二区| 宅男在线国产精品| 国产日韩专区| 99久久久久久| 免费在线观看成人| 中文字幕五月欧美| 欧美xxxxxxxxx| 日本乱码高清不卡字幕| 黄色工厂这里只有精品| 国产成人av在线影院| 亚洲va欧美va人人爽| 久久精品一区二区三区四区| 在线观看精品一区| 亚洲乱码视频| 99久久免费视频.com| 久久国产精品99久久久久久老狼| 中文字幕一区av| 日韩欧美国产麻豆| 在线看日本不卡| 亚洲另类黄色| 色综合夜色一区| 精品亚洲欧美一区| 亚洲一二三区不卡| 国产精品亲子乱子伦xxxx裸| 69久久夜色精品国产69蝌蚪网| 亚洲女同同性videoxma| 欧美日韩免费观看一区| 成人理论电影网| 美国一区二区三区在线播放| 亚洲午夜电影网| 中文字幕一区二区三区在线播放| 精品三级在线看| 欧美在线free| 久久国产精品亚洲77777| 伊大人香蕉综合8在线视| 91在线精品秘密一区二区| 国产精品2024| 韩国三级在线一区| 日本免费在线视频不卡一不卡二 | 中文字幕色av一区二区三区| 久久综合久色欧美综合狠狠| 884aa四虎影成人精品一区| 色婷婷香蕉在线一区二区| 99伊人成综合| 亚洲午夜激情| 91麻豆成人久久精品二区三区| 国产老肥熟一区二区三区| 麻豆一区二区在线| 日韩精品成人一区二区在线| 亚洲一区二区三区自拍| 亚洲免费在线观看| 中文字幕亚洲区| 国产精品伦理在线| 国产精品水嫩水嫩| 亚洲国产精品v| 中文字幕精品综合| 日本一区二区三区在线观看| 久久久天堂av| 久久夜色精品国产噜噜av| 精品久久久久久久久久久久包黑料| 欧美精选一区二区| 欧美日韩成人在线| 欧美性猛交一区二区三区精品| 欧美一a一片一级一片| 欧美午夜精品免费| 欧美日韩国产系列| 777久久久精品| 日韩欧美久久一区| 欧美不卡一区二区| 久久伊人蜜桃av一区二区| 久久理论电影网| 国产农村妇女毛片精品久久麻豆 | 亚洲国产高清在线观看视频| 久久精品人人做人人爽97| 久久影院视频免费| 久久精品亚洲精品国产欧美| 国产欧美一区二区精品性| 国产精品日韩成人| 亚洲色图都市小说| 亚洲一区欧美一区| 婷婷中文字幕综合| 麻豆久久久久久| 蜜臀av一区二区| 精品一区二区三区不卡| 国产精品888| 99麻豆久久久国产精品免费| 91免费视频大全| 国模吧视频一区| 国产精品日韩高清| 91久久精品日日躁夜夜躁欧美| 欧美三级视频在线| 日韩精品中午字幕| 日本一区二区视频在线| 亚洲毛片av在线| 视频在线在亚洲|