Where to Disconnect() the `default_product_search_

2019-09-03 22:13发布

问题:

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?

回答1:

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



回答2:

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.