Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Soft delete for Django ORM, with support for undelete.
Python HTML
Latest commit dd536f7 @scoursen Update README



Soft delete for Django ORM, with support for undelete.

Can be tested directly with the following command: test softdelete --settings="softdelete.settings"

Inspired by

This project mostly exists to be able to provide undelete of soft-deleted objects, along with proper
undeletion of related objects.

Django 1.7

There are simple templates files in templates/.  You will need to add Django's
egg loader to use the templates as is:


Add the project 'softdelete' to your INSTALLED_APPS for 
through-the-web undelete support.


Central to the ability to undelete a soft-deleted model is the concept of changesets.  When you
soft-delete an object, any objects referencing it via a ForeignKey, ManyToManyField, or OneToOneField will
also be soft-deleted.  This mimics the traditional CASCADE behavior of a SQL DELETE.

When the soft-delete is performed, the system makes a ChangeSet object which tracks all affected objects of
this delete request.  Later, when an undelete is requested, this ChangeSet is referenced to do a cascading 

If you are undeleting an object that was part of a ChangeSet, that entire ChangeSet is undeleted.  

Once undeleted, the ChangeSet object is removed from the underlying database with a regular ("hard") delete.
Something went wrong with that request. Please try again.