2016-12-10 8 views
1

save()またはpost_saveがDjango Admin経由で発生したかどうかを確認する方法はありますか?私は、Django Rest Framework APIから保存されたモデルよりも、Adminを介して保存されたモデルのために何か別のやり方をしたいと思っています。モデルがDjango Adminや他の場所から保存されたかどうかを確認する方法

具体的には、関連するオブジェクトCalendarInfoを作成するためにのpost_saveを呼び出すと、私はcreate_related_objectsを持っています。

しかし、関連CalendarInfoオブジェクトがインラインであるため、管理者を経由してTransactionを作成するときに、私はTransactionモデルのpost_savecreate_related_objectsことを呼び出す必要はありません。ドキュメントから

+1

おそらく、save_modelメソッドhttps://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_modelを変更するとよいでしょう。ここでModelForm、Httpリクエストを受け取り、UIまたはAPIから来ているかどうかを確認するために –

+1

のpost_saveシグナルを削除する必要があります。シリアライザでの関連モデルの作成は、シリアライザでの最終的なモデル作成、add_viewとcreate_viewでのadminカスタマイズを行うアプローチである – e4c5

+0

@ e4c5を作成します。あなたが答えとしてあなたのコメントを書くことができるなら、それを受け入れることはうれしいでしょう。 – Pranab

答えて

1

InlineAdminが存在するため、関連するモデルを作成する必要はないため、post_saveの中にコードを追加して保存場所を特定するのではなく、post_save信号受信機を削除する方がよいでしょう。

こうすれば、同じ目的を達成するためにシリアライザのcreateメソッドにcreate_related_modelsを呼び出すことができます。

1

:管理者フォームが 提出されており、単にオブジェクトと関連するすべてのインスタンスの後 が作成され、保存された後

ModelAdmin.response_addが呼び出されます。オブジェクトを作成した後で、デフォルトの の動作を変更するには、これを変更することができます。

あなたModelAdminクラスでthe response_addメソッドをオーバーライドすることによって、あなたは正常に追加されました管理者で何か後にコードを実行することができます。

関連する問題