title: Bisect queryset around another model's queryset
body: <p>I'm writing an user-driven app with several zones to it. I want to allow users to customise their messaging settings so they only get emails on the parts and actions they care about. I've drawn up the following <code>Class</code>:</p>
  
  <pre><code>class EmailSetting(models.Model):
      user = models.ForeignKey(User, related_name="%(class)s_related_user")
      key = models.CharField(max_length=50)
      value = models.BooleanField()
  </code></pre>
  
  <p>This is to be used by a method called <code>get_users(key, default)</code>, which <em>should</em> return a list of users. For example, if I ask for a list of users that are subbed in on a <code>key="new_post", default=False</code>,  I should get a list of Users where they have an EmailSetting  with a value of True for that key. That's simple enough because I can just use the EmailSetting model.</p>
  
  <p>If the default is True, things appear to be harder. I've never done anything more complicated than basic look-ups with Models, so I need a hand.</p>
  
  <p>From a full list of Users, I need to remove ones with a False EmailSetting. Short of doing another query on EmailSetting looking for False entries and iteratively cutting them out of the first queryset, I can't see how to do this... </p>
  
  <p>... But there <em>must</em> be another way because that stinks.</p>