kopia lustrzana https://github.com/wagtail/wagtail
Optimize the db query on group edit page.
A couple of related selects and prefetches on the content types and permissions will cut down the query count slightly.pull/3376/head
rodzic
b0d8b4c577
commit
fd5a7ee171
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
Ładowanie…
Reference in New Issue