Added support for non-numeric primary keys
parent
31f28d5b50
commit
e1311fc6f5
|
|
@ -113,16 +113,18 @@ class SortableAdmin(ModelAdmin):
|
||||||
|
|
||||||
if request.is_ajax() and request.method == 'POST':
|
if request.is_ajax() and request.method == 'POST':
|
||||||
try:
|
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()
|
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)])
|
objects_dict = dict([(str(obj.pk), obj) for obj in klass.objects.filter(pk__in=indexes)])
|
||||||
min_index = min(objects_dict.values(), key=lambda x: getattr(x, 'order'))
|
lowest_ordered_object = min(objects_dict.values(), key=lambda x: getattr(x, 'order'))
|
||||||
min_index = getattr(min_index, 'order') or 0
|
min_index = getattr(lowest_ordered_object, 'order') or 0
|
||||||
|
|
||||||
for index in indexes:
|
for index in indexes:
|
||||||
obj = objects_dict[int(index)]
|
obj = objects_dict.get(index)
|
||||||
setattr(obj, 'order', min_index)
|
setattr(obj, 'order', min_index)
|
||||||
obj.save()
|
obj.save()
|
||||||
min_index += 1
|
min_index += 1
|
||||||
|
|
||||||
response = {'objects_sorted' : True}
|
response = {'objects_sorted' : True}
|
||||||
except (IndexError, klass.DoesNotExist, AttributeError):
|
except (IndexError, klass.DoesNotExist, AttributeError):
|
||||||
pass
|
pass
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
|
<!--script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script-->
|
||||||
|
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery-1.5.1.min.js"></script>
|
||||||
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery.ui.core.js"></script>
|
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery.ui.core.js"></script>
|
||||||
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery.ui.widget.js"></script>
|
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery.ui.widget.js"></script>
|
||||||
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery.ui.mouse.js"></script>
|
<script type="text/javascript" src="{{ STATIC_URL }}adminsortable/js/jquery.ui.mouse.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -24,5 +24,4 @@ def render_list_items(context, list_objects):
|
||||||
|
|
||||||
@register.inclusion_tag('adminsortable/shared/object_rep.html', takes_context=True)
|
@register.inclusion_tag('adminsortable/shared/object_rep.html', takes_context=True)
|
||||||
def render_object_rep(context, object):
|
def render_object_rep(context, object):
|
||||||
print object
|
|
||||||
return {'object' : object}
|
return {'object' : object}
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue