From 8b35063f58ceade5d5af42f955ae2c0fdb7128fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Safa=20Ar=C4=B1man?= Date: Wed, 10 Jun 2020 10:56:36 +0300 Subject: [PATCH] Performance improvement on parentadmin --- polymorphic/admin/parentadmin.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/polymorphic/admin/parentadmin.py b/polymorphic/admin/parentadmin.py index c9f7598..c822966 100644 --- a/polymorphic/admin/parentadmin.py +++ b/polymorphic/admin/parentadmin.py @@ -146,13 +146,14 @@ class PolymorphicParentModelAdmin(admin.ModelAdmin): """ self._lazy_setup() choices = [] - for model in self.get_child_models(): + content_types = ContentType.objects.get_for_models(*self.get_child_models(), for_concrete_models=False) + + for model, ct in content_types.items(): perm_function_name = "has_{0}_permission".format(action) model_admin = self._get_real_admin_by_model(model) perm_function = getattr(model_admin, perm_function_name) if not perm_function(request): continue - ct = ContentType.objects.get_for_model(model, for_concrete_model=False) choices.append((ct.id, model._meta.verbose_name)) return choices