Where to Disconnect() the `default_product_search_

2019-09-03 22:06发布

I don't want to use the Default Satchmo search listener. I've created my own search listener instead.

Where is the best place to disconnect the default search listener?

# This is what I need to do...
from satchmo_store.shop.listeners import default_product_search_listener
application_search.disconnect(default_product_search_listener, sender=Product)

I was trying to do it in my app's __init__.py and the my app's models.py, but both of those seemed to run before Satchmo actually connects the Signal, so they don't properly disconnect things. Where can I run my disconnect code so that I can be assured Satchmo has already connected its listener?

2条回答
家丑人穷心不美
2楼-- · 2019-09-03 22:24

Try swapping the order of Satchmo and your app in INSTALLED_APPS.

查看更多
Fickle 薄情
3楼-- · 2019-09-03 22:33

The answer to this question is more generally answered by Where To Put Django Startup Code.

Write middleware that does this in init and afterwards raise django.core.exceptions.MiddlewareNotUsed from the init, django will remove it for all requests...

See the Django documentation on writing your own middleware.

查看更多
登录 后发表回答