Django仅为新条目发出信号

时间:2012-06-18 08:58:29

标签: python django django-signals

我正在使用Django的post_save信号,只要将文章添加到网站,就会向用户发送电子邮件。但是,每当我对已创建的文章使用save()方法时,用户仍会收到新的电子邮件。只有在添加新条目时才能接收电子邮件?

提前致谢

3 个答案:

答案 0 :(得分:29)

post_save信号接收一个布尔created参数,指示是否创建了保存的instance

def my_callback(sender, **kwargs):
    if kwargs['created']:
        print('Instance is new')

答案 1 :(得分:3)

查看https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_save

实际上有一个参数传递了信号“created:A boolean;如果创建了新记录,则为True”。

我认为,应该这样做。

答案 2 :(得分:0)

检查instance.id是确定实例是否为“new”的好方法。这仅适用于使用数据库自​​动生成的ID。