title: What's the best django way to do a query that spans several tables?
body: <p>I have a reviews/ratings web application, a la Digg. My django app <code>content</code> has the following model:</p>
  
  <pre><code>class Content(models.Model):
      title = models.CharField(max_length=128)
      url = models.URLField(max_length=2048)
      description = models.TextField(blank=True)
  
  class Recommendation(models.Model):
      user = models.ForeignKey(User)
      content = models.ForeignKey(Content)
      review = models.TextField()
      rating = models.PositiveSmallIntegerField()
      class Meta:
          unique_together = ('user', 'content')
  
  class Subscription(models.Model):
      subscriber = models.ForeignKey(User, related_name='subscription_set')
      publisher = models.ForeignKey(User, related_name='publication_set')
      class Meta:
          unique_together = ('subscriber', 'publisher')
  </code></pre>
  
  <p>I want to construct a page with all the recommendations of all the users to whom a current user (<code>request.user</code>) subscribes.</p>
  
  <p>If I write this in SQL, I believe I'll end up with a query similar to the following:</p>
  
  <pre><code>select content_content.*, content_recommendation.*, auth_user.*
  from content_content, content_recommendation, content_subscription, auth_user
  where content_content.id = content_recommendation.content_id
   and content_recommendation.user_id = content_subscription.publisher_id 
   and content_subscription.subscriber_id = ?
   and auth_user.id = content_subscription.publisher_id;
  </code></pre>
  
  <p>How would I express this using Django's query APIs? I've read the docs, but just can't get my head around it.</p>