Django documentation

13. Adding hooks before/after saving and deleting

This example describes Django version 0.95. For the current example, go here.

To execute arbitrary code around save() and delete(), just subclass the methods.

Model source code

from django.db import models

class Person(models.Model):
    first_name = models.CharField(maxlength=20)
    last_name = models.CharField(maxlength=20)

    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

    def save(self):
        print "Before save"
        super(Person, self).save() # Call the "real" save() method
        print "After save"

    def delete(self):
        print "Before deletion"
        super(Person, self).delete() # Call the "real" delete() method
        print "After deletion"

API_TESTS = """
>>> p1 = Person(first_name='John', last_name='Smith')
>>> p1.save()
Before save
After save

>>> Person.objects.all()
[<Person: John Smith>]

>>> p1.delete()
Before deletion
After deletion

>>> Person.objects.all()
[]
"""