我正在模型的pre_save信号中工作,我不知道如何检查记录是INSERT还是UPDATE。下面的代码(不正常):Django pre_save信号:我怎么知道它是插入还是更新
@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。
感谢所有帮助
这样会工作,只是if条件是错误的方式。 –
@DanielRoseman是的,我看到如果条件错了。但它不管用。 Instance.pk总是存在 –
如果pk存在,那么Django不知道它是更新还是插入。在这种情况下,Django会尝试更新,如果失败则返回插入。如果您的应用程序在保存实例之前设置了pk,那么您只能通过查询db来查找匹配的pk。 – knbk