私はモデルのpre_save信号で作業しています。レコードがINSERTかUPDATEかどうかを確認する方法はわかりません。以下のコードは正常に動作しません。Django 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を使用しています。あなたは具体的には以下の
if条件が間違った方法であることを除いて、これは機能します。 –
@DanielRosemanええ、私は条件が間違っているのを見ました。しかし、それはとにかく動作しません。 Instance.pkは常に存在する –
pkが存在する場合、Djangoは更新または挿入のいずれかを知らない。その場合、Djangoはアップデートを試みますが、失敗した場合はインサートに戻ります。インスタンスが保存される前にアプリケーションがpkを設定していれば、dbに一致するpkを問い合わせることによってのみ確実に見つけることができます。 – knbk