Ответ 1
Взгляните на документы: https://docs.djangoproject.com/en/dev/ref/signals/#post-save
Существует аргумент created
named, который будет установлен в True
, если это новый объект.
Мне нужно выполнить некоторую фоновую пост-обработку вновь созданных объектов в Django. Эта пост-обработка должна выполняться только для новых объектов, а не для объектов, которые только что обновлены.
Я знаю, что в pre_save я могу проверить, имеет ли объект идентификатор, если он не имеет тогда нового объекта. Но проблема в том, что в пост-обработке мне нужен доступ к id (чтобы я мог сохранить результаты обратно в базу данных).
Как я могу сделать это чистым способом?
Взгляните на документы: https://docs.djangoproject.com/en/dev/ref/signals/#post-save
Существует аргумент created
named, который будет установлен в True
, если это новый объект.
Как 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)