Django框架F查詢與Q查詢 全面了解

2022-10-04 00:27:23 字數 1814 閱讀 9104

一:f與q查詢

1.f查詢的作用

能夠幫助你直接獲取到列表中某個字段對應的資料

注意:在操作字串型別的資料的時候, f不能夠直接做到字串的拼接

2.查詢賣出書大於庫存數的書籍
# 匯入f查詢

from django.db.models import f

# f 將書籍 庫存字段對應的值 依序取出 並進行比較

res = models.book.objects.filter(maichu__gt=f('kucun'))

print(res)

3.將所有書籍的**提公升500塊
# f 將書籍 **字段對應的值 依序 加500元

models.book.objects.update(price=f('price') + 500)

4.將所有書的名稱後面加上爆款兩個字
注意:

在操作字元型別的資料的時候 f不能夠直接做到字串的拼接

# 修改或拼接字串資料 需要匯入以下兩個模組

from django.db.models.functions import concat

from django.db.models import value

# f 將書籍內的 title欄位尾部 依序 加上 爆款 拼接字串

models.book.objects.update(title=concat(f('title'), value('爆款')))

models.book.objects.update(title=f('title') + '爆款') # 錯誤 所有的名稱會全部變成空白

二:q查詢

1.q查詢的作用

filter()等方法中的關鍵字引數查詢都是一起進行"and",如果你需要執行更複雜的查詢(列如orm語句),你可以使用q物件。
2..查詢賣出數0大於100或者**小於60的書籍
# 匯入q模組

from django.db.models import q

# q包裹逗號分割 還是adn關係

res = models.book.objects.filter(q(maichu__gt=100), q(price__lt=600))

# | or關係

res = models.book.objects.filter(q(maichu__gt=100)|q(price__lt=600))

# ~ not關係

res = models.book.objects.filter(~q(maichu__gt=100)|q(price__lt=600))

# print(res)

3.q的高階用法
# 先產生乙個空物件  實列化

q = q()

q.connector = 'or' # and修改成or

# q物件裡面有乙個children

# 第乙個元素就會被當作查詢條件的左邊 第二個元素會被當作查詢條件右邊

res = models.book.objects.filter(q) # filter 除了可以放條件 還可以放物件

print(res) # 預設還是and關係

4.q高階用法

1.可以在去物件內 children裡面 無限制的新增元素 新增元組,兩個元素。

2.而且還支援修改 or and not

3.預設是and

Django之F與Q查詢

from django.db.models import f,q 1.查詢庫存數大於賣出數的書籍 res models.book.objects.filter kucun gt f maichu print res 2.將所有書的 提高100 models.book.objects.update p...

Django之F和Q查詢

當一般的查詢語句已經無法滿足我們的需求時,django為我們提供了f和q複雜查詢語句。假設場景一 老闆說對資料庫中所有的商品,在原 的基礎 價10元,你該怎麼做?場景二 我要查詢乙個名字叫 年齡是18歲,或者名字是yyy,年齡是是19歲的人,你該怎麼寫你的orm語句?一 f查詢 1 2 3 4 fr...

Django之F和Q查詢

當一般的查詢語句已經無法滿足我們的需求時,django為我們提供了f和q複雜查詢語句。假設場景一 老闆說對資料庫中所有的商品,在原 的基礎 價10元,你該怎麼做?場景二 我要查詢乙個名字叫 年齡是18歲,或者名字是yyy,年齡是是19歲的人,你該怎麼寫你的orm語句?一 f查詢 1 2 3 4 fr...