077 Django資料庫 Q表示式詳解

2022-03-26 06:28:23 字數 1005 閱讀 3099

q表示式詳解:

如果想要實現所有**高於100元,並且評分達到9.0以上評分的圖書。那麼可以通過以下**來實現:

books = book.objects.filter(price__gte=100,rating__gte=9)
以上這個案例是乙個並集查詢,可以簡單的通過傳遞多個條件進去來實現。

但是如果想要實現一些複雜的查詢語句,比如要查詢所有**低於10元,或者是評分低於9分的圖書。那就沒有辦法通過傳遞多個條件進去實現了。這時候就需要使用 q表示式 來實現了。示例**如下:

from django.db.models import

qbooks = book.objects.filter(q(price__lte=10) | q(rating__lte=9))

以上是進行或運算,當然還可以進行其他的運算,比如有 & 和 ~(非) 等。一些用 q 表示式的例子如下:

from django.db.models importq#

獲取id等於3的圖書

books = book.objects.filter(q(id=3))

#獲取id等於3,或者名字中包含文字"記"的圖書

books = book.objects.filter(q(id=3)|q(name__contains("記"

)))#

獲取**大於100,並且書名中包含"記"的圖書

books = book.objects.filter(q(price__gte=100)&q(name__contains("記"

)))#

獲取書名包含「記」,但是id不等於3的圖書

books = book.objects.filter(q(name__contains='

記') & ~q(id=3))

例項**截圖:

django資料庫Q查詢

要查詢的日誌表 選擇日誌中特定使用者名稱,並且操作時間在start date與end date之間的表項 查詢語句如下 chosed user logs.objects.filter q log account num current user.account num q deal time gte...

django查詢資料庫

特殊過濾 django資料庫查詢時,一般就是 modelname.objects.a ll modelname.objects.filter modelname.objects.get 等等,在過濾時,如果過濾條件假設是其中的某一欄位,比如 id,要求id 5,或者是乙個範圍比如1 id 5,前者可...

django資料庫查詢

特殊過濾 django資料庫查詢時,一般就是 modelname.objects.a ll modelname.objects.filter modelname.objects.get 等等,在過濾時,如果過濾條件假設是其中的某一欄位,比如 id,要求id 5,或者是乙個範圍比如1 id 5,前者可...