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()