tools.py 858 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.db.models import Q
  2. ##############################################################################
  3. def build_q_for_fields_and_querydict(fields, params):
  4. q = None
  5. for filterkey in fields:
  6. if filterkey in params:
  7. #print filterkey
  8. qsub = None
  9. #print 'getlist: %s' % params.getlist(filterkey)
  10. for value in params.getlist(filterkey):
  11. if value:
  12. if value == '__':
  13. value = ''
  14. elif value == '_NULL_':
  15. value = None
  16. elif value == 'True':
  17. value = True
  18. elif value == 'False':
  19. value = False
  20. dd = dict( [(filterkey.replace('exclude_', ''), value), ] )
  21. #print 'dd: %s' % dd
  22. if qsub:
  23. qsub |= Q(**dd)
  24. else:
  25. qsub = Q(**dd)
  26. #print 'qsub: %s' % qsub
  27. if qsub:
  28. if q:
  29. q &= qsub
  30. else:
  31. q = qsub
  32. #print 'q: %s' % q
  33. #print q
  34. return q or Q()