成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_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国内精品久久久久久久
99久久婷婷国产综合精品电影| 亚洲丝袜精品丝袜在线| 国产精品天干天干在观线| 亚洲国产精品一区二区www在线| 精油按摩中文字幕久久| 欧美日韩系列| 欧美猛男超大videosgay| 亚洲国产精品黑人久久久| 美美哒免费高清在线观看视频一区二区| 91在线视频观看| 欧美三区在线观看| 亚洲你懂的在线视频| 粉嫩高潮美女一区二区三区| 性8sex亚洲区入口| 国产欧美日韩精品一区| 老司机精品视频在线| 99国产精品久久久久老师| 日韩午夜精品视频| 男女视频一区二区| 国产亚洲一级| 国产区在线观看成人精品| 韩国欧美一区二区| 久久经典综合| 中文字幕五月欧美| aaa欧美色吧激情视频| 欧美撒尿777hd撒尿| 亚洲国产wwwccc36天堂| 欧美日韩国产精品一区二区亚洲| 欧美一区中文字幕| 日韩av电影天堂| 国产精品夜夜夜| 国产精品电影院| 粉嫩av一区二区三区在线播放| 久久伊人亚洲| 一区二区三区不卡视频在线观看| 欧美精品二区| 久久精品日韩一区二区三区| 国产精品123区| 欧美日韩一区不卡| 免费成人你懂的| 久久中文字幕一区二区三区| 亚洲一区二区中文在线| 亚洲精品偷拍| ...xxx性欧美| 亚洲福利一区| 日韩毛片在线免费观看| 欧美日韩国产高清| 国产精品美日韩| 国产精品国产亚洲精品看不卡15 | 九九国产精品视频| 欧美中文一区二区三区| 蜜桃av一区二区在线观看| 久久午夜av| 日韩专区在线视频| 一本到不卡免费一区二区| 午夜电影网亚洲视频| 麻豆精品传媒视频| 视频在线在亚洲| 在线观看91精品国产入口| 免费成人在线观看| 在线不卡中文字幕播放| 国产伦精品一区二区三区免费| 欧美男同性恋视频网站| 懂色av中文一区二区三区 | 午夜亚洲福利| 国产精品久久久久久久第一福利 | 蜜臀av性久久久久av蜜臀妖精| 在线精品观看国产| 国产乱色国产精品免费视频| 欧美一区二区三区视频在线观看| 成人性视频网站| 久久理论电影网| 在线看片一区| 午夜欧美视频在线观看| 欧美日韩国产一级| 91色九色蝌蚪| 亚洲免费观看高清在线观看| 乱码第一页成人| 激情综合网天天干| 精品奇米国产一区二区三区| 欧美精品国产一区| 亚洲国产欧美日韩另类综合| 在线免费av一区| 成人亚洲精品久久久久软件| 中文字幕在线播放不卡一区| 久久国产欧美精品| 国产精品99久久久久久久女警| 久久久久久久久岛国免费| 亚洲黄色一区| 精品午夜一区二区三区在线观看| 精品国内片67194| 99精品国产在热久久| 麻豆免费精品视频| 久久综合国产精品| 亚洲一区二区精品在线| 国产一区二区免费看| 国产精品人人做人人爽人人添| 免费在线亚洲| www.综合网.com| 亚洲国产综合人成综合网站| 4438x成人网最大色成网站| 国外成人免费视频| 久久精品国产澳门| 欧美国产一区二区| 在线免费观看不卡av| 欧美精品九九| 久久不见久久见免费视频7| 国产日韩精品一区二区三区在线| 亚洲尤物在线| 成人福利在线看| 午夜欧美一区二区三区在线播放 | 日韩视频三区| 国产成人免费xxxxxxxx| 一区二区三区精品久久久| 日韩限制级电影在线观看| 国产私拍一区| 97久久超碰精品国产| 天堂蜜桃91精品| 国产精品三级av在线播放| 欧美日韩三级一区| 国产欧美另类| 99麻豆久久久国产精品免费优播| 香蕉久久一区二区不卡无毒影院| 精品国产免费一区二区三区香蕉| 久久xxxx| 国产在线观看一区| 国内精品久久久久影院一蜜桃| 亚洲精品视频在线看| 欧美日韩视频不卡| 香蕉免费一区二区三区在线观看| 欧美~级网站不卡| 国产精品一区二区免费不卡| 亚洲电影第三页| 亚洲欧洲精品一区二区三区不卡| 日韩精品一区二区三区swag| 日本乱码高清不卡字幕| av成人天堂| 国产综合欧美在线看| av中文一区二区三区| 国产一区二区三区四| 蜜桃视频一区二区| 亚洲国产欧美日韩另类综合| 中文字幕亚洲一区二区av在线| 欧美成人女星排名| 91麻豆精品国产91久久久使用方法| 久久精品国产清高在天天线| 亚洲成色www久久网站| 欧美暴力喷水在线| 9i在线看片成人免费| 国产精品一区二区男女羞羞无遮挡 | 欧美午夜一区二区福利视频| 波多野结衣亚洲| 国产成人a级片| 国产精品伊人色| 国产一区视频网站| 韩国在线一区二区| 国内成+人亚洲+欧美+综合在线| 亚洲18女电影在线观看| 亚洲与欧洲av电影| 一区2区3区在线看| 一级女性全黄久久生活片免费| 18欧美亚洲精品| 亚洲桃色在线一区| 亚洲欧美国产毛片在线| 亚洲欧洲日韩女同| 亚洲色图制服诱惑 | 欧美影院午夜播放| 91精品91久久久中77777| 色婷婷综合激情| 在线看国产一区二区| 欧美在线播放高清精品| 欧洲国内综合视频| 精品视频在线免费看| 欧美日韩激情在线| 日韩欧美一级片| 欧美精品一区二区久久久| 久久亚洲二区三区| 中文字幕精品一区二区三区精品| 欧美极品xxx| 亚洲三级在线免费| 亚洲一区在线观看视频| 日本午夜精品一区二区三区电影| 狂野欧美性猛交blacked| 国产精品自拍毛片| 99re免费视频精品全部| 欧美午夜不卡影院在线观看完整版免费| 国语精品中文字幕| 国产伦精品一区| 欧美专区在线观看一区| 91精品免费在线| 国产丝袜在线精品| 亚洲综合激情网| 狠狠狠色丁香婷婷综合激情| 成人午夜av影视| 亚洲电影成人| 欧美做爰猛烈大尺度电影无法无天| 91精品国产欧美一区二区18| 欧美激情一区二区三区蜜桃视频| 一区二区三区在线影院| 久久99久久久欧美国产|