Fix sorting for raw_id objects

- Added common function to get querystring filters
- Excluded querystring parameters used for raw_id fields
- Version bump to 2.1.13
- Updated readme
This commit is contained in:
Brandon Taylor
2019-02-21 09:56:08 -05:00
parent 9b143ca58e
commit e2bee04990
6 changed files with 23 additions and 14 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
VERSION = (2, 1, 12)
VERSION = (2, 1, 13)
DEV_N = None
+12 -9
View File
@@ -34,6 +34,15 @@ class SortableAdminBase(object):
after_sorting_js_callback_name = None
def get_querystring_filters(self, request):
filters = {}
for k, v in request.GET.items():
if k not in ['_to_field', '_popup',]:
filters.update({ k: v })
return filters
def changelist_view(self, request, extra_context=None):
"""
If the model that inherits Sortable has more than one object,
@@ -42,10 +51,7 @@ class SortableAdminBase(object):
"""
# apply any filters via the querystring
filters = {}
for k, v in request.GET.items():
filters.update({ k: v })
filters = self.get_querystring_filters(request)
# Check if the filtered queryset contains more than 1 item
# to enable sort link
@@ -131,7 +137,8 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
# get sort group index from querystring if present
sort_filter_index = request.GET.get('sort_filter')
filters = {}
# apply any filters via the querystring
filters = self.get_querystring_filters(request)
if sort_filter_index:
try:
@@ -139,10 +146,6 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
except (IndexError, ValueError):
pass
# apply any filters via the querystring
for k, v in request.GET.items():
filters.update({ k: v })
# Apply any sort filters to create a subset of sortable objects
return self.get_queryset(request).filter(**filters)