のドキュメントでは、シグナル(、、など)のコールバック関数を見つけるのに適した場所であるとDjango
指定されています。models.py
post_save
pre_save
このコードはどこにあるべきですか?
信号処理と登録コードはどこにでも置くことができます。ただし、信号を送信する前に信号処理が登録されるように、モジュールが含まれているモジュールが早い段階でインポートされていることを確認する必要があります。これにより、アプリのmodels.pyはシグナルハンドラーの登録を行うのに適した場所になります。
ただし、シグナルに依存するビジネスロジックが大量にあり、すべてのモデルと同じファイルでシグナルを表示することが難しくなっています。
それらを別のファイルに移動したいのですが、どこでどのように参照できるのかわかりません。
したがって、次のファイル構造を前提として、適切な信号を含む2次(または3次など)ファイルを参照する方法の例を教えてください。
# models.py located in /myapp/some_installed_app/
from django import needed.modules
... # some reference to signals.py?
class SomeModel()
pass
# signals.py located in /myapp/some_installed_app/
from django import needed.things
...
def somefun(sender,**kwargs)
pass
post_save.connect(somefun, sender=SomeModel)