from django.db.models import Q ############################################################################## def build_q_for_fields_and_querydict(fields, params): q = None for filterkey in fields: if filterkey in params: #print filterkey qsub = None #print 'getlist: %s' % params.getlist(filterkey) for value in params.getlist(filterkey): if value: if value == '__': value = '' elif value == '_NULL_': value = None elif value == 'True': value = True elif value == 'False': value = False dd = dict( [(filterkey.replace('exclude_', ''), value), ] ) #print 'dd: %s' % dd if qsub: qsub |= Q(**dd) else: qsub = Q(**dd) #print 'qsub: %s' % qsub if qsub: if q: q &= qsub else: q = qsub #print 'q: %s' % q #print q return q or Q()