Django documentation

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()
[]