Django Models多條件查詢

2021-10-09 06:34:23 字數 2145 閱讀 6034

1、傳引數

models.userinfo.objects.filter(id=3,name='alex')
2、傳字典

需要注意的是,傳入字典時,字典前面需要加**,記為字典

dic = 

models.userinfo.objects.filter(**dic)

所以我們可以在在捕捉使用者輸入後,將輸入構造成字典,然後將字典當做引數傳入查詢

3、傳q物件,構造搜尋條件

a、在 filter() 等函式中關鍵字引數彼此之間都是"and" 關係。如果你要執行更複雜的查詢(比如,

實現篩選條件的or 關係),可以使用 q 物件。

b、q物件包括 and 關係 和or 關係

c、q 物件可以用 & 和 | 運算子進行連線。當某個操作連線兩個 q 物件時,就會產生乙個新的等

價的 q 物件。

如:下面這段語句就產生了乙個 q ,這是用 "or" 關係連線

q(question__startswith='who') | q(question__startswith='what')
d、每種查詢函式(比如 filter(), exclude(), get()) 除了能接收關鍵字引數以外,也能以位置引數的

形式接受乙個或多個 q 物件。如果你給查詢函式傳遞了多個 q 物件,那麼它們彼此間都是

"and" 關係。例如:

poll.objects.get(

q(question__startswith='who'),

q(pub_date=date(2005, 5, 2)) | q(pub_date=date(2005, 5, 6))

)

e: filter() 等函式 可以接受 q物件和條件引數,但q物件必須放在 條件引數前面

4、q物件使用例項:

首先還是需要匯入模組

from django.db.models import q
傳入條件進行查詢:

q1 = q()

q1.connector = 'or' #連線方式

models.tb1.objects.filter(q1)

合併條件進行查詢:

con = q()

q1 = q()

q1.connector = 'or'

q2 = q()

q2.connector = 'or'

con.add(q1, 'and')

con.add(q2, 'and')

models.tb1.objects.filter(con)

f物件

list.filter(bread__gte=f('bcommet'))
list.filter(bread__gte=f('bcommet') * 2)
list.filter(isdelete=f('heroinfo__isdelete'))
list.filter(bpub_date__lt=f('bpub_date') + timedelta(days=1))
q物件

from django.db.models import q

list.filter(q(pk_ _lt=6))

list.filter(pk_ _lt=6).filter(bcommet_ _gt=10)

list.filter(q(pk_ _lt=6) | q(bcommet_ _gt=10))

list.filter(~q(pk__lt=6))

多條件查詢

思路 1.獲取引數值 2.生成查詢條件 3.獲取查詢結果 4.繫結查詢選項 呼叫geturlhtml方法生成查詢url 例如 var y2013 pnvshihufu qbeijing sxuhuiqu 得到url變數值 protected string geturlval string name ...

多條件查詢

多條件查詢時在做專案的時候不可缺少的功能,雖然很簡單,但是自己還是記一下,對自己有用 查詢事件 private void button查詢 click object sender,eventargs e initial catalog uid pwd this.dataserver,this.dat...

多條件查詢

開發工具與關鍵技術 vs c 當使用者需要通過一定的條件進行範圍查詢的時候,在控制器中,就需要判斷使用者傳來的條件,一般使用者條件查詢會有下拉框,文字框等from表單元件 預設下拉框內的資料已繫結,本文暫不進行時間的範圍查詢 通過獲取這些元件的值,可以方便快捷的採集使用者的資訊 一 查詢 創鍵多條件...