I have these models:
class Permission(models.Model):
    name = models.CharField(u'Name', max_length=100)
    codename = models.CharField(u'Code name', max_length=100)
class Role(models.Model):
    name = models.CharField(u'Name', max_length=80)
    organization = models.ForeignKey(Organization)
    permissions = models.ManyToManyField(Permission, blank=True)
class UserProfileManager(models.Manager):
    def get_query_set(self):
        return super(UserProfileManager, self).get_query_set().select_related(
            'user', 'organization'
        )
class UserProfile(models.Model):
    user = models.OneToOneField(User)
    organization = models.ForeignKey(Organization, blank=True)
    roles = models.ManyToManyField(Role, blank=True)
    permissions = models.ManyToManyField(Permission, blank=True)
    objects = UserProfileManager()
I want to read all user permissions ('permissions' and 'roles__permissions') with maximum 2 SELECTS.
If I try to add prefetch_related('permissions', 'roles__permissions') to UserProfileManager I get 3 SELECTs (for permissions, roles and roles__permissions)
How to do it?