1. """
    
  2. Adding hooks before/after saving and deleting
    
  3. 
    
  4. To execute arbitrary code around ``save()`` and ``delete()``, just subclass
    
  5. the methods.
    
  6. """
    
  7. from django.db import models
    
  8. 
    
  9. 
    
  10. class Person(models.Model):
    
  11.     first_name = models.CharField(max_length=20)
    
  12.     last_name = models.CharField(max_length=20)
    
  13. 
    
  14.     def __init__(self, *args, **kwargs):
    
  15.         super().__init__(*args, **kwargs)
    
  16.         self.data = []
    
  17. 
    
  18.     def __str__(self):
    
  19.         return "%s %s" % (self.first_name, self.last_name)
    
  20. 
    
  21.     def save(self, *args, **kwargs):
    
  22.         self.data.append("Before save")
    
  23.         # Call the "real" save() method
    
  24.         super().save(*args, **kwargs)
    
  25.         self.data.append("After save")
    
  26. 
    
  27.     def delete(self):
    
  28.         self.data.append("Before deletion")
    
  29.         # Call the "real" delete() method
    
  30.         super().delete()
    
  31.         self.data.append("After deletion")