Django objects.filter多个过滤器

时间:2011-10-03 10:03:44

标签: django django-models django-views

用户可以选择要过滤的字段,我只需要过滤那些字段,但可以有3个字段。

用户选择所有三个选项: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没有被选中,我不想把它包含在我的过滤器中,

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

或者我也许这么过滤器基本上是一个“全部”选择​​器

如上所述:

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

1 个答案:

答案 0 :(得分:15)

您可以使用关键字参数dict:

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}