一: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...