6. Signals¶
Django ships with the following signals for database operations:
- Saving a single instance:
pre_save
andpost_save
- Deleting data:
pre_delete
andpost_delete
- Changing a many to many relationship:
m2m_changed
Missing from this list is the ability to attach signals before and after updating data and bulk-creating data.
6.1. Bulk-create signals¶
The following signals are fired when data is created in bulk:
pre_bulk_create
is fired just before data is createdpost_bulk_create
is fired just after data is created
For copying data into the database from a buffer (i.e., using copy_from_instances
):
pre_copy_from_instances
is fired just before data is copiedpost_copy_from_instances
is fired just after data is copied
6.2. Update signals¶
There are three sets of signals attached to the three ways you can update data.
For homogeneous updates (i.e., use the classic update()
):
pre_update
is fired just before data is updatedpost_update
is fired just after data is updated
For heterogeneous updates (i.e., using update_fields()
):
pre_update_fields
is fired just before data is updatedpost_update_fields
is fired just after data is updated
See Siganls Reference for more details.