Skip to content

Instantly share code, notes, and snippets.

@kylefox kylefox/
Last active Oct 14, 2019

What would you like to do?
Connecting Django Signals using the AppConfig ready handler:
default_app_config = 'cn.apps.users.config.UsersAppConfig'
from django.apps import AppConfig
class UsersAppConfig(AppConfig):
name = 'cn.apps.users'
def ready(self):
import signals # noqa
from django.dispatch import receiver
from django.db.models.signals import post_save, pre_delete
from django.contrib.auth.models import User
from .models import UserProfile
@receiver(post_save, sender=User, dispatch_uid="users.create_user_profile")
def create_user_profile(**kwargs):
Automatically create a UserProfile for any newly created User.
user = kwargs.get('instance')
if not hasattr(user, 'profile'):
@receiver(pre_delete, sender=UserProfile,
def delete_profile_image(**kwargs):
Deletes the UserProfile.image file.

This comment has been minimized.

Copy link

teewuane commented Nov 9, 2018

After upgrading to Django 2, I'm having trouble with this same method. In the ready method, when I try to import signals, I get "No module named 'Signals'". Any thoughts on this? This was working with Django 1.10.

My bad, I found the answer in the docs here


This comment has been minimized.

Copy link

cizario commented Oct 13, 2019

As per the documentation, it's recommended to avoid using default_app_config in and require cn.apps.users.config.UsersAppConfig in INSTALLED_APPS

New applications should avoid default_app_config. Instead they should require the dotted path to the appropriate AppConfig subclass to be configured explicitly in INSTALLED_APPS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.