13. Adding hooks before/after saving and deleting
This example is for Django's SVN release, which can be significantly different from previous releases. Get old examples here: 0.96, 0.95.
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(max_length=20)
last_name = models.CharField(max_length=20)
def __unicode__(self):
return u"%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"
Sample API usage
This sample code assumes the above model has been saved in a file mysite/models.py.
>>> from mysite.models import Person >>> 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() []

