2 回呼び出されるという問題があり、post_save
前述のようにインポートを理解するのに多くの時間を費やしました。インポートは 1 回のみで、複数登録の問題がないことを確認しました。dispatch_uid
また、ドキュメントに従って問題を解決する必要があるシグナル登録で一意のものを使用しています。それはしませんでした。さらに注意深く調べたところ、シグナル ハンドラが .create() と .save() で呼び出されることがわかりました。なぜ作成するのですか?
それを機能させる唯一の方法は、シグナルハンドラー内の以下のハックに依存することです
created = False
#Workaround to signal being emitted twice on create and save
if 'created' in kwargs:
if kwargs['created']:
created=True
#If signal is from object creation, return
if created:
return
これは、 uid にもかかわらず、Django ポストセーブシグナルが 2 回呼び出されるという質問へのフォローアップです。