title: Django transitive closure generates wrong SQL
body: <p>I have the models</p>
  
  <pre><code>class Person(models.Model):
      # some fields
  
  class Chat(models.Model):
      people = models.ManyToManyField(Person)
      # some fields
  </code></pre>
  
  <p>and I want to generate a queryset of all the people who share at least one conversation with some given person.</p>
  
  <p>I tried</p>
  
  <pre><code>Person.objects.get(pk=2).chat_set.values_list('people').distinct()
  </code></pre>
  
  <p>But that gives me <code>[(2,)]</code> when it should be <code>[(1,),(2,),(3,)]</code>.</p>
  
  <p>I then tried</p>
  
  <pre><code>print(Person.objects.get(pk=2).chat_set
      .values_list('people').distinct().query)
  </code></pre>
  
  <p>and that gave me</p>
  
  <pre class="lang-sql prettyprint-override"><code>SELECT DISTINCT "webapp_chat_people"."person_id" FROM
  "webapp_chat" INNER JOIN "webapp_chat_people" ON (
      "webapp_chat"."id" = "webapp_chat_people"."chat_id" )
  WHERE "webapp_chat_people"."person_id" = 2
  </code></pre>
  
  <p>This is clearly wrong! How do I work around it? I would rather not do any kind of "select n+1." I'm using version 1.7.7, do I need to upgrade?</p>