Djangoショップアプリケーションでは、カートにアイテムを追加するなどのアクションへの登録済みシグナルハンドラーがあります。
このハンドラーを、で自分のバージョンに置き換えたいと思いlocalsite/models.py
ます。元のソースに触れることなく。
connect
メソッドを呼び出すだけの場合
signals.satchmo_cart_add_verify.connect(my_veto_out_of_stock)
カスタムハンドラーは現在の受信者のリストに追加されますが、元の受信者は引き続きアクションを取得します。
print signals.satchmo_cart_add_verify.receivers
"""
[((140073113515864, 140073319632416), <weakref at 0x7f65502c1aa0;
to 'function' at 0x7f65502c7758 (veto_out_of_stock)>),
((140073114981632, 140073319632416), <weakref at 0x7f65504295d0;
to 'function' at 0x7f655042d500 (my_veto_out_of_stock)>)]
"""
事前に元のハンドラーを削除することができます
for hnd in signals.satchmo_cart_add_verify.receivers:
del hnd
しかし、それは醜くてハックだと思います。
では、シグナルハンドラーを置き換える適切な方法は何ですか?
ありがとう