diff --git a/adminsortable/admin.py b/adminsortable/admin.py index 897c91a..4f6c2b0 100644 --- a/adminsortable/admin.py +++ b/adminsortable/admin.py @@ -113,16 +113,18 @@ class SortableAdmin(ModelAdmin): if request.is_ajax() and request.method == 'POST': try: - indexes = request.POST.get('indexes', []).split(',') + indexes = map(str, request.POST.get('indexes', []).split(',')) klass = ContentType.objects.get(id=model_type_id).model_class() - objects_dict = dict([(obj.pk, obj) for obj in klass.objects.filter(pk__in=indexes)]) - min_index = min(objects_dict.values(), key=lambda x: getattr(x, 'order')) - min_index = getattr(min_index, 'order') or 0 + objects_dict = dict([(str(obj.pk), obj) for obj in klass.objects.filter(pk__in=indexes)]) + lowest_ordered_object = min(objects_dict.values(), key=lambda x: getattr(x, 'order')) + min_index = getattr(lowest_ordered_object, 'order') or 0 + for index in indexes: - obj = objects_dict[int(index)] + obj = objects_dict.get(index) setattr(obj, 'order', min_index) obj.save() min_index += 1 + response = {'objects_sorted' : True} except (IndexError, klass.DoesNotExist, AttributeError): pass diff --git a/adminsortable/templates/adminsortable/shared/javascript_includes.html b/adminsortable/templates/adminsortable/shared/javascript_includes.html index fb347bd..e1b058d 100644 --- a/adminsortable/templates/adminsortable/shared/javascript_includes.html +++ b/adminsortable/templates/adminsortable/shared/javascript_includes.html @@ -1,4 +1,5 @@ - + + diff --git a/adminsortable/templatetags/adminsortable_tags.py b/adminsortable/templatetags/adminsortable_tags.py index 0f6ebd2..ca53798 100644 --- a/adminsortable/templatetags/adminsortable_tags.py +++ b/adminsortable/templatetags/adminsortable_tags.py @@ -24,5 +24,4 @@ def render_list_items(context, list_objects): @register.inclusion_tag('adminsortable/shared/object_rep.html', takes_context=True) def render_object_rep(context, object): - print object return {'object' : object} diff --git a/sample_project/adminsortable.sqlite b/sample_project/adminsortable.sqlite index a3ce8f9..76183e1 100644 Binary files a/sample_project/adminsortable.sqlite and b/sample_project/adminsortable.sqlite differ