2011-03-18 62 views

回答

8
reduce(operator.or_, Q(**{key + '__icontains': val}) for (key, val) in D.iteritems()) 
+1

不错,简洁。 – JHSaunders 2011-03-18 10:52:33

+0

双星号是什么意思? – 2011-07-29 14:53:59

+0

@ Thr4wn:[Keyword expansion。](http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists) – 2011-07-29 20:07:54

0

有一个更加务实的态度,一个QuerySet ,因为我需要从一个生成各种密钥。

query = None 
for key, value in d.iteritems(): 
    if query is None: 
     query = Q(**{key + "__icontains" : value}) 
    else: 
     query |= Q(**{key + "__icontains" : value}) 
相关问题