Подтвердить что ты не робот

Django: как узнать, срабатывает ли сигнал post_save на новом объекте?

Мне нужно выполнить некоторую фоновую пост-обработку вновь созданных объектов в Django. Эта пост-обработка должна выполняться только для новых объектов, а не для объектов, которые только что обновлены.

Я знаю, что в pre_save я могу проверить, имеет ли объект идентификатор, если он не имеет тогда нового объекта. Но проблема в том, что в пост-обработке мне нужен доступ к id (чтобы я мог сохранить результаты обратно в базу данных).

Как я могу сделать это чистым способом?

4b9b3361

Ответ 2

Как Docs указано, а @seler указал, но с примером:

def keep_track_save(sender, instance, created, **kwargs):
    action = 'save' if created else 'update'
    save_duplicate((instance.id, instance.__class__.__name__, action))

post_save.connect(keep_track_save, sender=Group)