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':
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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.widget.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)
|
||||
def render_object_rep(context, object):
|
||||
print object
|
||||
return {'object' : object}
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in New Issue