Soft deleting objects in django
django-softdelete is a library implementing soft delete for Django, with cascading. It also stores the changesets, and allows reverting the deletions (e.g. reverting the whole cascade).
I'm not sure what is it's maintenance status and quality, but it can at least serve as inspiration, if not a solution by itself.
Maybe you can use django-paranoid
is similar to acts_as_paranoid for rails and is easy to use.
You only need extend to model with ParanoidModel.
For see the deleted object you can use objects_with_deleted:
MyModel.objects_with_deleted.last()
and if do you want do hard delete an object you only should use True param:
m = MyModel.objects.last()
m.delete(True)