title: Django reverse relation with select_related
body: <p>I have 4 models and i want to retrieve a join between them</p>
  
  <p><strong>ModelA</strong></p>
  
  <pre><code>class ModelA(models.Model):
      product = models.ForeignKey(ModelB)
      group = models.ForeignKey(Group)
  </code></pre>
  
  <p><strong>ModelB</strong></p>
  
  <pre><code>class ModelB(models.Model):
      title = models.CharField()
  </code></pre>
  
  <p><strong>ModelC</strong></p>
  
  <pre><code>class ModelC(models.Model):
      product = models.ForeignKey(ModelB)
      group = models.ForeignKey(ModelD)
  </code></pre>
  
  <p><strong>ModelD</strong></p>
  
  <pre><code>class ModelD(models.Model):
      name = models.CharField()
  </code></pre>
  
  <p>Now i want all my <strong>ModelA</strong> objects joined with <strong>ModelB</strong>, <strong>ModelC</strong> and <strong>ModelD</strong>
  In sql this is pretty easy thing to do. Just make joins between tables.
  With Django ORM i'm stuck because i only can do forward relation.</p>
  
  <p>I'm doing this</p>
  
  <pre><code>ModelA.objects.all().select_related(product)
  </code></pre>
  
  <p>But i can't join ModelC 
  I already have read <a href="http://blog.roseman.org.uk/2010/01/11/django-patterns-part-2-efficient-reverse-lookups/">this article</a>, but i don't want to loop over my big list, to do a simple thing! And i want to hit database only once.</p>
  
  <p>I'm using the last version of Django and i hope there is already a solution to this, that i'm not aware of.</p>
  
  <p>Thank you.</p>