tags = ['tag1', 'tag2', 'tag3'] q_objects = Q() # Create an empty Q object to start with for t in tags: q_objects |= Q(tags__tag__contains=t) # 'or' the Q objects together designs = Design.objects.filter(q_objects)