2011-03-18 3 views

답변

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

멋지고 간결합니다. – JHSaunders

+0

이중 별표는 무엇을 의미합니까? –

+0

@ Thr4wn : [키워드 확장.] (http://docs.python.org/tutorial/controlflow.html#unpacking-argument-lists) –

0

더 실용적인 접근 거기 같은 검색어 세트가 필요합니다 , 하나에서 다양한 키를 생성해야합니다.

query = None 
for key, value in d.iteritems(): 
    if query is None: 
     query = Q(**{key + "__icontains" : value}) 
    else: 
     query |= Q(**{key + "__icontains" : value}) 
관련 문제