Django signals not working properly
django, signals
Solution
I think maybe you just need to import your `helpers/status.py` eg in `models/__init__.py`
otherwise your `event_status` signal gets defined ok but the signal handler `create_status` never gets connected by Django
if you only have one handler for that signal it might make sense to put it in the same module as the signal definition
Problem
I'm trying to setup a signal so that when a valid form is saved, a function is ran to carry out a related task. My app structure is as follows; ``` - events - helpers - __init__.py - status.py - models - signals - __init__.py - event.py - __init__.py - event.py - status.py - views - __init__.py - event.py ``` I believe signals need to be imported as early as possible, before models, so at the top of `models/__init__.py` I've got `from .signals import *`. ``` # views/event.py class AddEventView(CreateView): """ View for adding an Event. """ model = Event form_class = EventForm success_url = reverse_lazy('events:all_events') def form_valid(self, form): self.object = form.save() signals.event_status.send( sender=None, request=self.request, event=self.object, status=None ) # Should the sender be self.object? return super(AddEventView, self).form_valid(form) # signals/event.py from django.dispatch import Signal event_status = Signal(providing_args=["request", "event", "status"]) # helpers/status.py from ..models import Status, StatusHistory from ..models.signals import event_status def create_status(sender, **kwargs): """ Create a status for a given event. """ event = kwargs['event'] status = kwargs['status'] creator = User.objects.get(pk=event.creator) try: current_status = StatusHistory.objects.filter( event=event).order_by('timestamp')[0] except IndexError: # Not sure what we're doing here yet. pass if not status: status = Status.objects.get(description=_("Submitted")) statushistory = StatusHistory.create( event=event, event_status=status, user=creator ) statushistory.save() event_status.connect(create_status) ``` I'm running the debug server in Pycharm with a break point in the `create_status()` function & it's never getting hit. Have I implemented this wrong?