# models.py from django.db import models class Menu(models.Model): name = models.CharField(max_length = 100) def __unicode__(self): return self.name class Item(models.Model): menu = models.ForeignKey(Menu) name = models.CharField(max_length = 100) url = models.CharField(max_length = 100) order = models.IntegerField(blank = True, null = True) def __unicode__(self): return self.name class Meta: ordering = ('order',) # admin.py from django.contrib import admin from django import forms from models import Menu, Item class MenuForm(forms.ModelForm): model = Menu class Media: js = ( '/static/js/jquery-latest.js', '/static/js/ui.base.js', '/static/js/ui.sortable.js', '/static/js/menu-sort.js', ) class ItemInline(admin.StackedInline): model = Item admin.site.register(Menu, inlines = [ItemInline], form = MenuForm, ) """ /* menu-sort.js */ jQuery(function($) { $('div.inline-group').sortable({ /*containment: 'parent', zindex: 10, */ items: 'div.inline-related', handle: 'h3:first', update: function() { $(this).find('div.inline-related').each(function(i) { if ($(this).find('input[id$=name]').val()) { $(this).find('input[id$=order]').val(i+1); } }); } }); $('div.inline-related h3').css('cursor', 'move'); $('div.inline-related').find('input[id$=order]').parent('div').hide(); }); """