Ответ 1
Сигнал post_save
получает логический аргумент created
, который указывает, был ли сохранен сохраненный instance
.
def my_callback(sender, **kwargs):
if kwargs['created']:
print('Instance is new')
Я использую сигнал Django post_save для отправки писем пользователям каждый раз, когда новая статья добавляется на сайт. Тем не менее, пользователи по-прежнему получают новые письма, когда я использую метод save()
для уже созданных статей. Как можно получать электронные письма только при добавлении новой записи?
Заранее спасибо
Сигнал post_save
получает логический аргумент created
, который указывает, был ли сохранен сохраненный instance
.
def my_callback(sender, **kwargs):
if kwargs['created']:
print('Instance is new')
Взгляните на https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_save
Фактически есть аргумент, переданный с сигналом "created: Boolean; True, если была создана новая запись".
Я думаю, это должно сделать трюк.
Проверка на instance.id - хороший способ определить, является ли экземпляр "новым". Это работает, только если вы используете идентификаторы, которые автоматически генерируются вашей базой данных.