2011-10-03 151 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