如何在預儲存訊號中查詢是否插入或更新
通過利用 pre_save
,我們可以確定我們資料庫上的 save
操作是關於更新現有物件還是建立新物件。
為了實現這一點,你可以檢查模型物件的狀態:
@receiver(pre_save, sender=User)
def pre_save_user(sender, instance, **kwargs):
if not instance._state.adding:
print ('this is an update')
else:
print ('this is an insert')
現在每次發生 save
動作時,pre_save
訊號都會執行並列印出來:
this is an update
如果動作來自更新動作。this is an insert
如果動作來自插入動作。
請注意,此方法不需要任何其他資料庫查詢。