f物件和q物件
f物件作用:標記字段,無需獲取資料庫欄位到本地就能對資料庫中的指定字段進行操作
例如點讚高併發場景使用f物件更新點讚值即可實現如下這條sql語句的效果:
update biao set money = money + 1 where id = ***x #
#批量更新零售價此外,f物件還可以在不取值的情況下進行字段值的比較,例如:book.objects.all().update(market_price=f('market_price')+10)
對比資料庫中的兩個字段,看看那些書的零售價高於定價:
from django.db.models import f, qq物件作用:from bookstore.models import book
books=book.objects.filter(market_price__get=f('price'))
for book in books:
print(book.title,'定價',book.price,'零售價',book.market_price)
或與非,當查詢條件複雜時可以考慮使用q物件,例如:
#找出定價低於20元或清華大學出版社的全部書(&與|或~非)示例:book.objects.filter(q(price__lt=20)|q(pub="清華大學出版社"))
#知識點:
q(條件1)&~q(條件2) #條件1成立且條件2不成立
q(條件1)&q(條件2) #條件1與條件2同時成立
q(條件1)|(條件2) #條件1成立或條件2成立
from django.db.models import q#查詢清華大學出版社的書或**低於50的書
book.objects.filter(q(pub_house="清華大學出版社")|q(market_price__lt=50))
#查詢不是機械工業出版社的書且**低於50的書
book.objects.filter(q(market_price__lt=50)&~q(pub_house="機械工業出版社"))
Django中的F物件與Q物件
1.f物件 如果需要對同一模型類物件的兩個屬性進行比較,則需要使用到f物件 該物件被定義在django.db.models中 from django.db.models import f filminfo.objects.filter playcount gt f commentcount 也可以對...
Django之路 10 django的分頁元件
批量匯入資料 booklist for i in range 100 book.objects.bulk create booklist 分頁器的使用 book list book.objects.all paginator paginator book list,10 print count pa...
Django學習路18 F物件和Q物件
f 物件 可以使用模型的 a 屬性和 b 屬性進行比較 寫法 需要的資料物件 資料表 類名 objects.filter 列名 條件 f 列名2 需求 檢視男生數量比女生少 的公司名稱 companies company.objects.filter c boy num lt f c girl nu...