diff --git a/adminsortable/admin.py b/adminsortable/admin.py index 539d2b1..648c466 100644 --- a/adminsortable/admin.py +++ b/adminsortable/admin.py @@ -102,6 +102,24 @@ class SortableAdmin(SortableAdminBase, ModelAdmin): ] + urls return urls + def get_sort_view_queryset(self, request, sortable_by_expression): + """ + Return a queryset, optionally filtered based on request and + `sortable_by_expression` to be used in the sort view. + """ + # get sort group index from querystring if present + sort_filter_index = request.GET.get('sort_filter') + + filters = {} + if sort_filter_index: + try: + filters = self.model.sorting_filters[int(sort_filter_index)][1] + except (IndexError, ValueError): + pass + + # Apply any sort filters to create a subset of sortable objects + return self.get_queryset(request).filter(**filters) + def sort_view(self, request): """ Custom admin view that displays the objects as a list whose sort @@ -115,19 +133,6 @@ class SortableAdmin(SortableAdminBase, ModelAdmin): jquery_lib_path = 'admin/js/jquery.js' if VERSION < (1, 9) \ else 'admin/js/vendor/jquery/jquery.js' - # get sort group index from querystring if present - sort_filter_index = request.GET.get('sort_filter') - - filters = {} - if sort_filter_index: - try: - filters = self.model.sorting_filters[int(sort_filter_index)][1] - except (IndexError, ValueError): - pass - - # Apply any sort filters to create a subset of sortable objects - objects = self.get_queryset(request).filter(**filters) - # Determine if we need to regroup objects relative to a # foreign key specified on the model class that is extending Sortable. # Legacy support for 'sortable_by' defined as a model property @@ -175,6 +180,8 @@ class SortableAdmin(SortableAdminBase, ModelAdmin): sortable_by_class_display_name = \ sortable_by_class_is_sortable = None + objects = self.get_sort_view_queryset(request, sortable_by_expression) + if sortable_by_property or sortable_by_fk: # Order the objects by the property they are sortable by, # then by the order, otherwise the regroup diff --git a/adminsortable/templates/adminsortable/change_list.html b/adminsortable/templates/adminsortable/change_list.html index 749d830..0dcbbf2 100644 --- a/adminsortable/templates/adminsortable/change_list.html +++ b/adminsortable/templates/adminsortable/change_list.html @@ -1,5 +1,5 @@ {% extends "admin/base_site.html" %} -{% load i18n admin_urls static admin_list adminsortable_tags %} +{% load i18n admin_urls static admin_list %} {% block extrastyle %} {{ block.super }} @@ -86,9 +86,9 @@ {% if objects %}