Django pre_save 信号:我如何知道它是插入还是更新

And*_*uiz 2 python django signals

我正在模型的 pre_save 信号中工作,我不知道如何检查记录是插入还是更新。下面的代码(无法正常工作):

@receiver(pre_save, sender=Person)
def pre_save_person(sender, instance, **kwargs): 

    if not instance.pk:
        print 'INSERT !!!!!!'
    else:
        print 'UPDATE !!!!!!'
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?该项目使用django 1.8.7。

谢谢你的帮助

And*_*uiz 5

在 @knbk 注释之后,instance.pk 此时将始终存在。您必须检查数据库中是否存在此instance.pk:

@receiver(pre_save, sender=Person)
def pre_save_person(sender, instance, **kwargs):

    num = Person.objects.filter(pk=instance.pk).count()
    if num == 0 :
        print 'INSERT !!'
    else:
        print 'UPDATE !!'
Run Code Online (Sandbox Code Playgroud)