title: Django values on m2m field doesn't return the same as same query on base Model
body: <p>I expect a behaviour I'm not obtaining. Consider this example model:</p>
  <pre><code>class Node(models.Model):
      name = models.CharField(max_length=30)  # Verbose for readability
  
  class SpecialNode(Node):
     other_attr = models.CharField(max_length=30)
  
  class Edge(models.Model):
      nodes = models.ManyToManyField(Node, related_name=&quot;edges&quot;)
  </code></pre>
  <p>I have a given node (that is not Special), and I want to know which Edges doesn't (or does) connect with a SpecialNode.</p>
  <p>If I do this, works:</p>
  <pre><code># All the edges except those which have a node that is a SpecialNode
  Edge.objects.filter(node__id=1).exclude(nodes__specialnode__isnull=False)
  
  </code></pre>
  <p>Tho... this doesn't work, returns all the edges of the node instead.</p>
  <pre><code>Node.objects.get(id=1).edges.exclude(nodes__specialnode__isnull=False)
  
  </code></pre>
  <p>I don't know what I'm missing or missunderstanding, but I expect a queryset of edges with both sentences.</p>