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?