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:

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 :

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:

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")