2009-07-11 11 views

答えて

3

あなたがやって "OR" クエリ、このようなものされている場合は、次のクエリ "AND" については

from django.db.models import Q 

q = Q() 
for k,v in d.iteritems(): 
     q |= Q(**{'%s__equal' % k: v}) 

SomeModule.objects.filter(q) 

In Django, how does one filter a QuerySet with dynamic field lookupsへの答えに示すように、それは非常に簡単です:

SomeModule.objects.filter(**d) 
0

あなたはできるも手続き型パラダイムによって強制されるそれらの厄介な一時的な変数なしに、それを1行で機能的に行う:

SomeModule.objects.filter(reduce(Q.__or__, (Q(k=v) for k, v in d.iteritems())))