class MyModel(models.Model):
	order = models.IntegerField(editable=False)
	#...

	def move(self, move):
		if move == 'UP':
			mm = MyModel.objects.get(order=self.order-1)
			mm.order += 1
			mm.save()
			self.order -= 1
			self.save()
			#...

class MyModelAdminForm(forms.ModelForm):
	move = forms.CharField(widget=forms.Select)
	move.required = False
	move.widget.choices=(
			(models.BLANK_CHOICE_DASH[0]),
			('FIRST', 'First'),
			('UP', 'Up'),
			('DOWN', 'Down'),
			('LAST', 'Last'),
		)
 
	class Meta:
		model = MyModel

class MyModelAdmin(admin.ModelAdmin):
	form = MyModelAdminForm
 
	def save_model(self, request, obj, form, change):
		obj.save()
		move = form.cleaned_data['move']
		obj.move(move)

admin.site.register(MyModel, MyModelAdmin)