title: Django: how to query relations effectively
body: <p>I have a model "Booking" referencing to another model "Event" with a foreign key.</p>
  
  <pre><code>class Event(models.Model):
      title = models.CharField(_("title"), max_length=100)
  
  class Booking(models.Model):
      user = models.ForeignKey('auth.User', ..., related_name='bookings')
      event = models.ForeignKey('Event', ..., related_name='bookings')
  </code></pre>
  
  <p><strong>I want to get all the events a user has booked</strong> in a set, to use it in a ListView.</p>
  
  <p>I have managed to accomplish that by overwriting ListView's get_queryset method:</p>
  
  <pre><code>def get_queryset(self):
      user_bookings = Booking.objects.filter(user=self.request.user)
      events = Event.objects.filter(id__in=user_bookings.values('event_id'))
      return events
  </code></pre>
  
  <p>But I am quite sure, that that is not a very efficient way of solving my problem, in terms of needed database queries. </p>
  
  <p>I have thought about using "select_related" method, but I didn't figured out how I could benefit from that in my usecase.</p>
  
  <p><strong>My question is: How would you solve this? What is the most efficient way to do something like this?</strong></p>