我正在使用模型的pre_save信号,但我不知道如何检查记录是INSERT还是UPDATE。下面的代码(没有正常工作):
@receiver(pre_save, sender=Person)
def pre_save_person(sender, instance, **kwargs):
if not instance.pk:
print 'INSERT !!!!!!'
else:
print 'UPDATE !!!!!!'
你能帮帮我吗?该项目使用django 1.8.7。
感谢您的帮助
答案 0 :(得分:3)
关注@ 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 !!'
答案 1 :(得分:0)
尝试
if instance.pk is None:
print "inserting"
else:
print "updating"
这在所有情况下都不起作用,我建议您使用post_save创建标记,除非您特别需要pre_save