diff --git a/wagtail/wagtailadmin/forms.py b/wagtail/wagtailadmin/forms.py index 1af8c44ba..0ce84f2df 100644 --- a/wagtail/wagtailadmin/forms.py +++ b/wagtail/wagtailadmin/forms.py @@ -404,8 +404,8 @@ class BaseGroupCollectionMemberPermissionFormSet(forms.BaseFormSet): for collection, collection_permissions in groupby( instance.collection_permissions.filter( - permission__in=self.permission_queryset, - ).order_by('collection'), + permission__in=self.permission_queryset + ).select_related('permission__content_type', 'collection').order_by('collection'), lambda cp: cp.collection ): initial_data.append({ @@ -500,7 +500,7 @@ def collection_member_permission_formset_factory( permission_queryset = Permission.objects.filter( content_type__app_label=model._meta.app_label, codename__in=[codename for codename, short_label, long_label in permission_types] - ) + ).select_related('content_type') if default_prefix is None: default_prefix = '%s_permissions' % model._meta.model_name @@ -512,7 +512,7 @@ def collection_member_permission_formset_factory( (i.e. group or user) for a specific collection """ collection = forms.ModelChoiceField( - queryset=Collection.objects.all() + queryset=Collection.objects.all().prefetch_related('group_permissions') ) permissions = forms.ModelMultipleChoiceField( queryset=permission_queryset, diff --git a/wagtail/wagtailusers/forms.py b/wagtail/wagtailusers/forms.py index 38f44e998..1d4415fd8 100644 --- a/wagtail/wagtailusers/forms.py +++ b/wagtail/wagtailusers/forms.py @@ -201,7 +201,7 @@ class GroupForm(forms.ModelForm): self.registered_permissions = Permission.objects.none() for fn in hooks.get_hooks('register_permissions'): self.registered_permissions = self.registered_permissions | fn() - self.fields['permissions'].queryset = self.registered_permissions + self.fields['permissions'].queryset = self.registered_permissions.select_related('content_type') required_css_class = "required" @@ -276,7 +276,7 @@ class BaseGroupPagePermissionFormSet(forms.BaseFormSet): initial_data = [] for page, page_permissions in groupby( - instance.page_permissions.order_by('page'), lambda pp: pp.page + instance.page_permissions.select_related('page').order_by('page'), lambda pp: pp.page ): initial_data.append({ 'page': page,