私はこれらのモデルを持っています:
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()
最大2つのSELECTSを使用して、すべてのユーザー権限('permissions'および'roles__permissions')を読み取りたい。
prefetch_related('permissions', 'roles__permissions')
UserProfileManagerに追加しようとすると、3つのSELECTが表示されます(権限、役割、およびroles__permissions)
どうやってするの?