I have never actually implemented a feature such as the one you are attempting to make, but I would assume overriding a core feature may not be the best idea, especially as it may become a bit confusing for you. My suggestion would be to create a custom delete method as follows:
class Destination(modelsModel):
title = models.Charfield(max_length=9000)
[...]
class ItemToMove(models.Model):
title = models.CharField(max_length=9000)
[...same fields as "Destination" model...]
def delete_and_move(self):
Destination.objects.create(title=self.title, [...])
self.delete()
return "Object successfully deleted and moved"
def __unicode__(self):
return self.title
You can use this to delete a single object by typing obj.delete_and_move(), or you can even run items = ItemToMove.objects.filter(title='barney'), and then delete via:
for i in items:
i.delete_and_move()