Added support for non-numeric primary keys

master
Brandon Taylor 2011-09-17 16:48:14 -05:00
parent 31f28d5b50
commit e1311fc6f5
4 changed files with 9 additions and 7 deletions

View File

@ -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

View File

@ -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>

View File

@ -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.