13. Adding hooks before/after saving and deleting
These docs are frozen for Django version 0.91. For current documentation, go here.
Django provides hooks for executing arbitrary code around save() and delete(). Just add any of the following methods to your model:
- _pre_save() is called before an object is saved.
- _post_save() is called after an object is saved.
- _pre_delete() is called before an object is deleted.
- _post_delete() is called after an object is deleted.
Model source code
from django.core import meta
class Person(meta.Model):
first_name = meta.CharField(maxlength=20)
last_name = meta.CharField(maxlength=20)
def __repr__(self):
return "%s %s" % (self.first_name, self.last_name)
def _pre_save(self):
print "Before save"
def _post_save(self):
print "After save"
def _pre_delete(self):
print "Before deletion"
def _post_delete(self):
print "After deletion"
API reference
Person objects have the following methods:
- delete()
- save()
Sample API usage
This sample code assumes the above model has been saved in a file examplemodel.py.
>>> from django.models.examplemodel import persons >>> p1 = persons.Person(first_name='John', last_name='Smith') >>> p1.save() Before save After save >>> persons.get_list() [John Smith] >>> p1.delete() Before deletion After deletion >>> persons.get_list() []

