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