我有ManyToManyField
到django.contrib.auth.models.Permission
Django的ManyToManyField到权限
的问题是,当我打开编辑我的模型记录的管理,数据库的请求数量是241
class RoleManager(models.Manager):
def get_query_set(self):
return super(RoleManager, self).get_query_set().select_related('organization')
class Role(models.Model):
name = models.CharField(u'Name', max_length = 80)
organization = models.ForeignKey(Organization)
permissions = models.ManyToManyField(Permission, blank = True)
objects = RoleManager()
def __unicode__(self):
return u'{name} in {organization}'.format(name = self.name, organization = self.organization.name)
的235模型选择是:
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 8
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 8
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 8
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 68
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 69
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 69
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 69
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 9
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 9
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 9
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 10
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 10
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 10
SELECT ••• FROM "django_content_type" WHERE "django_content_type"."id" = 17
可能是我必须使用管理器来解决这个问题吗?
我看着https://github.com/django/django/blob/master/django/contrib/auth/models.py
,看见你已被使用一些PermissionManager,但不知道究竟是什么发生,如何让它在我的经理
当然,但确切地说。我尝试了一些参数组合,但不能使它变成 –
@ju。你是否试过'返回超级(RoleManager,self).get_query_set()。select_related('organization')。prefetch_related('permissions__content_type')'? –
是:(但我可以肯定地告诉你今天 –