docs/signals.rst
Signals
------------------------------------
`django-simple-history` includes signals that help you provide custom behavior when
saving a historical record. Arguments passed to the signals include the following:
.. glossary::
instance
The source model instance being saved
history_instance
The corresponding history record
history_date
Datetime of the history record's creation
history_change_reason
Freetext description of the reason for the change
history_user
The user that instigated the change
using
The database alias being used
For Many To Many signals you've got the following :
.. glossary::
instance
The source model instance being saved
history_instance
The corresponding history record
rows (for pre_create)
The elements to be bulk inserted into the m2m table
created_rows (for post_create)
The created elements into the m2m table
field
The recorded field object
To connect the signals to your callbacks, you can use the ``@receiver`` decorator:
.. code-block:: python
from django.dispatch import receiver
from simple_history.signals import (
pre_create_historical_record,
post_create_historical_record,
pre_create_historical_m2m_records,
post_create_historical_m2m_records,
)
@receiver(pre_create_historical_record)
def pre_create_historical_record_callback(sender, **kwargs):
print("Sent before saving historical record")
@receiver(post_create_historical_record)
def post_create_historical_record_callback(sender, **kwargs):
print("Sent after saving historical record")
@receiver(pre_create_historical_m2m_records)
def pre_create_historical_m2m_records_callback(sender, **kwargs):
print("Sent before saving many to many field on historical record")
@receiver(post_create_historical_m2m_records)
def post_create_historical_m2m_records_callback(sender, **kwargs):
print("Sent after saving many to many field on historical record")