from games.models import Timeline def game_saved(sender, instance, created, raw, using, update_fields, **kwargs): """ Add timeline entry. If game is created, add 2 timlines: 1 with CREATED status. The other with current object status. """ # FIXME: don't write a timeline if previous have same title and object_id entry = { 'item': instance, 'status': instance.status, } # Add CREATED status if Game was created if created is True: new_entry = dict(entry) new_entry.update({'status': instance.CREATED}) Timeline.objects.create(**new_entry) # Add new timeline entry ONLY if status is difference from CREATED one if instance.status != instance.CREATED: Timeline.objects.create(**entry)