10Django的Q物件和F物件

2022-09-14 19:30:15 字數 1131 閱讀 1210

f物件和q物件

f物件作用:標記字段,無需獲取資料庫欄位到本地就能對資料庫中的指定字段進行操作

例如點讚高併發場景使用f物件更新點讚值即可實現如下這條sql語句的效果:

update biao set money = money + 1 where id = ***x #

#批量更新零售價

book.objects.all().update(market_price=f('market_price')+10)

此外,f物件還可以在不取值的情況下進行字段值的比較,例如:

對比資料庫中的兩個字段,看看那些書的零售價高於定價:

from django.db.models import f, q

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物件作用:

或與非,當查詢條件複雜時可以考慮使用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...