Soft deletes work, but in reviewing the code the scope at which they are being managed is to high, and should be moved from the database connection. I think... I also think that the is_deleted property in use should not be named this way or be a boolean. Instead it should be a del_state_to_include = 'deleted only', 'not deleted only', 'all'.