我正在模型的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