欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django中F表達(dá)式和Q函數(shù)應(yīng)用與原理詳解

 更新時間:2023年05月19日 09:33:36   作者:花開花落與云卷云舒  
F對象查詢與Q對象查詢,剛看到大家一定會感到很陌生,其實它們也是 Django 提供的查詢方法,而且非常的簡單的高效,下面這篇文章主要給大家介紹了關(guān)于django中F表達(dá)式和Q函數(shù)應(yīng)用與原理的相關(guān)資料,需要的朋友可以參考下

一、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ù)據(jù)庫中將原數(shù)據(jù)取出放到內(nèi)存中,然后再編輯某些屬性,最后再提交。

1.2 應(yīng)用

初始數(shù)據(jù)庫數(shù)據(jù)

使用F字段直接進(jìn)行數(shù)學(xué)運算

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á)式, 就是將模型字段的值與同一模型中的另一個字段進(jìn)行比較。

例如,查詢read_num大于等于230的name:

from django.db.models import F
Game.objects.filter(bread__gte=F('read_num'))

F() 對象使用常量和其他 F() 對象的加法,減法,乘法,除法,模和冪運算。 

F()也可以具體到某一個字段的操作。

將閱讀數(shù)增加100

Game.objects.update(price=F("read_num") + 100)

二、Q函數(shù)

2.1 原理

  • Q對象相當(dāng)于查詢時使用 or 語句 ;
  • Q對象可以使用 & 和 | 進(jìn)行組合運算, 當(dāng)一個操作符用于兩個Q對象時,它就會生成一個新的Q對象;
  • Q對象可以用 “~” 操作符放在前面表示否定,也可允許否定與不否定形式的組合;
  • Q對象可以與關(guān)鍵字參數(shù)查詢一起使用,不過一定要把Q對象放在關(guān)鍵字參數(shù)查詢的前面;

2.2 例子

# 查詢價格大于等于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生成詞云圖的代碼示例

    基于python生成詞云圖的代碼示例

    這篇文章主要個介紹了如何基于python生成詞云圖的代碼示例,文中有詳細(xì)的代碼示例喝圖文講解,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11
  • 如何用pandas讀取一個文件或某個文件夾下所有文件

    如何用pandas讀取一個文件或某個文件夾下所有文件

    這篇文章主要介紹了如何用pandas讀取一個文件或某個文件夾下所有文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python使用multiprocessing實現(xiàn)多進(jìn)程

    Python使用multiprocessing實現(xiàn)多進(jìn)程

    當(dāng)我們工作中涉及到處理大量數(shù)據(jù)、并行計算或并發(fā)任務(wù)時,Python的multiprocessing模塊是一個強(qiáng)大而實用的工具,在本文中,我們將探索如何使用multiprocessing模塊實現(xiàn)多進(jìn)程編程,將介紹進(jìn)程池的概念和用法,需要的朋友可以參考下
    2024-10-10
  • python的metaclass使用小結(jié)

    python的metaclass使用小結(jié)

    python中的metaclass可謂熟悉而又陌生,自己開發(fā)時很少用,閱讀源碼時卻經(jīng)常遇到,那么到底什么是metaclass呢?何時使用metaclass呢?這篇文章主要介紹了python的metaclass,需要的朋友可以參考下
    2024-01-01
  • 如何基于windows實現(xiàn)python定時爬蟲

    如何基于windows實現(xiàn)python定時爬蟲

    這篇文章主要介紹了如何基于windows實現(xiàn)python定時爬蟲,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Python爬蟲設(shè)置ip代理過程解析

    Python爬蟲設(shè)置ip代理過程解析

    這篇文章主要介紹了Python爬蟲設(shè)置ip代理過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 如何用python 操作MongoDB數(shù)據(jù)庫

    如何用python 操作MongoDB數(shù)據(jù)庫

    這篇文章主要介紹了如何用python 操作MongoDB數(shù)據(jù)庫,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • 盤點Python中讀取和提取JSON文件的4種方法

    盤點Python中讀取和提取JSON文件的4種方法

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,Python中提供了多種方式來讀取和處理JSON文件,本文將詳細(xì)介紹四種常見的方法,希望對大家有所幫助
    2024-03-03
  • 基于PyQt6編寫一個串口調(diào)試助手

    基于PyQt6編寫一個串口調(diào)試助手

    這篇文章主要為大家詳細(xì)介紹了如何基于PyQt6編寫一個串口調(diào)試助手,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • Python爬蟲與反爬蟲大戰(zhàn)

    Python爬蟲與反爬蟲大戰(zhàn)

    這篇文章主要介紹了Python爬蟲與反爬蟲的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解Python爬蟲與反爬蟲的關(guān)系,感興趣的朋友可以了解下
    2020-07-07

最新評論