2011-10-03 144 views
3

用戶可以選擇要過濾的字段,我只需要過濾那些字段,但可以有3個字段。Django objects.filter多個過濾器

用戶選擇全部三個選項:a,b和c如果

Foo.objects.filter(a=1,b=2,c=3), good 

用戶僅選擇1或選擇2個選擇?

Foo,objects.filter(a=1, b=2, c=not selected) 

我該如何做到只按選定的選項進行過濾。這是來自帖子的觀點,看起來像這樣。如果不選擇:

a=1,b=NaN,c=3 

所以B沒有選擇,我不希望inlclude它在我的過濾器,

Foo.objects.filter(a=1,c=3) 

,或者可以也許我這樣一個過濾器,基本上是一個「全能」選擇

所以按照上面:

Foo.objects.filter(a=1,b=%,c=3) 

回答

14

可以使用KEYW ORD參數字典:

filterargs = { 'a': 1, 'b': 2, 'c': 3 } 
Foo.objects.filter(**filterargs) 

然後只過濾器在A和B:

filterargs = { 'a': 1, 'b': 2 } 

或a和c:

filterargs = { 'a': 1, 'c': 3} 
+0

感謝,這將工作! – Harry