djugl 2015 signals and appconfig
TRANSCRIPT
from django.db.models.signals import post_savefrom django.dispatch import receiverfrom myapp.models import MyModel
@receiver(post_save, sender=MyModel)def my_handler(sender, **kwargs): pass
# my_app/signals.py
from django.db.models.signals import pre_savefrom django.dispatch import receiverfrom myapp.models import MyModel
@receiver(pre_save, sender=MyModel)def my_handler(sender, **kwargs): pass
# my_app/signals.py
Django<1.7?
make sure that the module it’s in gets imported early on so that the signal handling gets registered before any signals need to be sent
Django<1.7?
make sure that the module it’s in gets imported early on so that the signal handling gets registered before any signals need to be sent
from django.db import modelsfrom my_app import signals
class MyModel(models.Model): pass
# my_app/models.py
from django.apps import AppConfig
class RickNMortyConfig(AppConfig): name = "rick_n_morty" verbose_name = "Rick and Morty"
# my_app/apps.py
INSTALLED_APPS = [ "my_app.apps.RickNMortyConfig", # ...]
# settings.py
or
default_app_config = "my_app.apps.RickNMortyConfig"
# my_app/__init__.py
from django.apps import AppConfig
class RickNMortyConfig(AppConfig): name = "rick_n_morty" verbose_name = "Rick and Morty”
def ready(self): from my_app import signals
# my_app/apps.py
• Imports each item from INSTALLED_APPS
• Imports the models submodule if exists
• Runs the ready() method of each app config