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 readmemaster
parent
9b143ca58e
commit
e2bee04990
|
|
@ -606,8 +606,8 @@ ordering on top of that just seemed a little much in my opinion.
|
||||||
### Status
|
### Status
|
||||||
django-admin-sortable is currently used in production.
|
django-admin-sortable is currently used in production.
|
||||||
|
|
||||||
### What's new in 2.1.12?
|
### What's new in 2.1.13?
|
||||||
- Fixed multiple list filter issue that was causing incorrect sortable objects to be displayed
|
- Fixed an issue when sorting was performed on an object referenced by a raw_id field
|
||||||
|
|
||||||
### Future
|
### Future
|
||||||
- Better template support for foreign keys that are self referential. If someone would like to take on rendering recursive sortables, that would be super.
|
- Better template support for foreign keys that are self referential. If someone would like to take on rendering recursive sortables, that would be super.
|
||||||
|
|
|
||||||
|
|
@ -745,10 +745,10 @@ Status
|
||||||
|
|
||||||
django-admin-sortable is currently used in production.
|
django-admin-sortable is currently used in production.
|
||||||
|
|
||||||
What’s new in 2.1.12?
|
What’s new in 2.1.13?
|
||||||
~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
- Fixed multiple list filter issue that was causing incorrect sortable objects to be displayed
|
- Fixed an issue when sorting was performed on an object referenced by a raw_id field
|
||||||
|
|
||||||
Future
|
Future
|
||||||
~~~~~~
|
~~~~~~
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
VERSION = (2, 1, 12)
|
VERSION = (2, 1, 13)
|
||||||
DEV_N = None
|
DEV_N = None
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,15 @@ class SortableAdminBase(object):
|
||||||
|
|
||||||
after_sorting_js_callback_name = None
|
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):
|
def changelist_view(self, request, extra_context=None):
|
||||||
"""
|
"""
|
||||||
If the model that inherits Sortable has more than one object,
|
If the model that inherits Sortable has more than one object,
|
||||||
|
|
@ -42,10 +51,7 @@ class SortableAdminBase(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# apply any filters via the querystring
|
# apply any filters via the querystring
|
||||||
filters = {}
|
filters = self.get_querystring_filters(request)
|
||||||
|
|
||||||
for k, v in request.GET.items():
|
|
||||||
filters.update({ k: v })
|
|
||||||
|
|
||||||
# Check if the filtered queryset contains more than 1 item
|
# Check if the filtered queryset contains more than 1 item
|
||||||
# to enable sort link
|
# to enable sort link
|
||||||
|
|
@ -131,7 +137,8 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
|
||||||
# get sort group index from querystring if present
|
# get sort group index from querystring if present
|
||||||
sort_filter_index = request.GET.get('sort_filter')
|
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:
|
if sort_filter_index:
|
||||||
try:
|
try:
|
||||||
|
|
@ -139,10 +146,6 @@ class SortableAdmin(SortableAdminBase, ModelAdmin):
|
||||||
except (IndexError, ValueError):
|
except (IndexError, ValueError):
|
||||||
pass
|
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
|
# Apply any sort filters to create a subset of sortable objects
|
||||||
return self.get_queryset(request).filter(**filters)
|
return self.get_queryset(request).filter(**filters)
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -52,6 +52,12 @@ class WidgetAdmin(SortableAdmin):
|
||||||
admin.site.register(Widget, WidgetAdmin)
|
admin.site.register(Widget, WidgetAdmin)
|
||||||
|
|
||||||
|
|
||||||
|
class CreditAdmin(SortableAdmin):
|
||||||
|
raw_id_fields = ('project',)
|
||||||
|
|
||||||
|
admin.site.register(Credit, CreditAdmin)
|
||||||
|
|
||||||
|
|
||||||
class CreditInline(SortableTabularInline):
|
class CreditInline(SortableTabularInline):
|
||||||
model = Credit
|
model = Credit
|
||||||
extra = 1
|
extra = 1
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue