I realize that select_related only works on foreign key and one-to-one relationships, but it seems there should be a simple, select_related-like way to join over many-to-many relations that are unique together provided all but one of the unique_together parameters is given.
class User(models.Model):
  article_access_set = models.ManyToManyField(Article,
      through='UserArticleAccess', related_name='user_access_set')
  # User Information ...
class Article(models.Model):
  # Article Information ...
class UserArticleAccess(models.Model):
  user = models.ForeignKey(User)
  article = models.ForeignKey(Article)
  # UserArticleAccess Information: flags, liked, last_access_time, ... 
  class Meta:
      unique_together = ('user', 'article')
I'm looking for a magical method:
qs = Article.objects.all().magical_select_related(select={
    'user_access_set': {'user': request.user}})
print qs[0].user_access_set
# <UserArticleAccess ...>
print qs[1].user_access_set # No Access
# None
Or maybe:
qs = Article.objects.all().magical_select_related(select = {
    'user_access_set': {'user': request.user}},
  as = {'user_access_set': 'user_access'})
print qs[0].user_access
# <UserArticleAccess ...>
print qs[1].user_access # No Access
# None
Is there any way to do this? (Or a reason that this shouldn't be implemented in this way or a similar way?)