django中F表達(dá)式和Q函數(shù)應(yīng)用與原理詳解
一、F表達(dá)式
1.1 原理
F表達(dá)式是對數(shù)據(jù)庫中某列值進(jìn)行操作,允許還沒有鏈接到數(shù)據(jù)的情況下對數(shù)據(jù)庫字段的值進(jìn)行操作,而不需要獲取到對象放在內(nèi)存中再對字段進(jìn)行操作,直接執(zhí)行原sql語句。
在通常情況下,我們在操作數(shù)據(jù)的時(shí)候都是先從數(shù)據(jù)庫中將原數(shù)據(jù)取出放到內(nèi)存中,然后再編輯某些屬性,最后再提交。
1.2 應(yīng)用
初始數(shù)據(jù)庫數(shù)據(jù)

使用F字段直接進(jìn)行數(shù)學(xué)運(yùn)算
from django.db models import F
res = models.Bbook.objects.all().update(read_num=F('read_num')+1)操作之后,數(shù)據(jù)庫中的數(shù)據(jù)都加5

Django中提供F 表達(dá)式, 就是將模型字段的值與同一模型中的另一個(gè)字段進(jìn)行比較。
例如,查詢r(jià)ead_num大于等于230的name:
from django.db.models import F
Game.objects.filter(bread__gte=F('read_num'))F() 對象使用常量和其他 F() 對象的加法,減法,乘法,除法,模和冪運(yùn)算。
F()也可以具體到某一個(gè)字段的操作。
將閱讀數(shù)增加100
Game.objects.update(price=F("read_num") + 100)二、Q函數(shù)
2.1 原理
- Q對象相當(dāng)于查詢時(shí)使用 or 語句 ;
- Q對象可以使用 & 和 | 進(jìn)行組合運(yùn)算, 當(dāng)一個(gè)操作符用于兩個(gè)Q對象時(shí),它就會(huì)生成一個(gè)新的Q對象;
- Q對象可以用 “~” 操作符放在前面表示否定,也可允許否定與不否定形式的組合;
- Q對象可以與關(guān)鍵字參數(shù)查詢一起使用,不過一定要把Q對象放在關(guān)鍵字參數(shù)查詢的前面;
2.2 例子
# 查詢價(jià)格大于等于70并且標(biāo)題是“J”開頭的書 Book.objects.filter(Q(price__gte=70)&Q(title__startswith="J")) # 查詢標(biāo)題是“J”開頭并且id不是3的書 Book.objects.filter(Q(title__startswith="J") & ~Q(id=3)) # Q對象可以與關(guān)鍵字參數(shù)查詢一起使用,必須把普通關(guān)鍵字查詢放到Q對象查詢的后面 print(Book.objects.filter(Q(price=70)|Q(title="Python"), publication_date="2017-09-26"))
總結(jié)
到此這篇關(guān)于django中F表達(dá)式和Q函數(shù)應(yīng)用與原理的文章就介紹到這了,更多相關(guān)django中F表達(dá)式和Q函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python數(shù)據(jù)分析與可視化的全面指南(從數(shù)據(jù)清洗到圖表呈現(xiàn))
Python 是數(shù)據(jù)分析與可視化領(lǐng)域中最受歡迎的編程語言之一,憑借其豐富的庫和工具,Python 能夠幫助我們快速處理、分析數(shù)據(jù)并生成高質(zhì)量的可視化圖表,本文將詳細(xì)介紹 Python 中的數(shù)據(jù)分析與可視化的基礎(chǔ)知識,并結(jié)合豐富的示例和技巧,幫助讀者深入理解這些概念2025-06-06
淺析python連接數(shù)據(jù)庫的重要事項(xiàng)
這篇文章主要介紹了python連接數(shù)據(jù)庫的重要事項(xiàng),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
Python腳本結(jié)合WPS多維表實(shí)現(xiàn)推送每日英語功能
這篇文章主要為大家詳細(xì)介紹了一種Python利用WPS多維表和企業(yè)微信實(shí)現(xiàn)英語每日一句自動(dòng)推送的教學(xué)輔助方法,文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下2026-02-02
Python中pandas模塊DataFrame創(chuàng)建方法示例
這篇文章主要介紹了Python中pandas模塊DataFrame創(chuàng)建方法,結(jié)合實(shí)例形式分析了DataFrame的功能,以及pandas模塊基于列表、字段與數(shù)組創(chuàng)建DataFrame的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Python實(shí)現(xiàn)Linux監(jiān)控的方法
本文通過實(shí)例代碼給大家介紹了Python實(shí)現(xiàn)Linux監(jiān)控的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Django實(shí)現(xiàn)簡單分頁功能的方法詳解
這篇文章主要介紹了Django實(shí)現(xiàn)簡單分頁功能的方法,結(jié)合實(shí)例形式分析了django的第三方模塊django-pure-pagination的安裝、使用及實(shí)現(xiàn)分頁的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
將keras的h5模型轉(zhuǎn)換為tensorflow的pb模型操作
這篇文章主要介紹了將keras的h5模型轉(zhuǎn)換為tensorflow的pb模型操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05

