Browse Source

Added AppConfig.setup() to run setup code.

Aymeric Augustin 11 years ago
parent
commit
e187caa3af
3 changed files with 14 additions and 0 deletions
  1. 5 0
      django/apps/base.py
  2. 3 0
      django/apps/registry.py
  3. 6 0
      docs/ref/applications.txt

+ 5 - 0
django/apps/base.py

@@ -162,3 +162,8 @@ class AppConfig(object):
         if module_has_submodule(self.module, MODELS_MODULE_NAME):
             models_module_name = '%s.%s' % (self.name, MODELS_MODULE_NAME)
             self.models_module = import_module(models_module_name)
+
+    def setup(self):
+        """
+        Override this method in subclasses to run setup code.
+        """

+ 3 - 0
django/apps/registry.py

@@ -135,6 +135,9 @@ class Apps(object):
                 self.clear_cache()
                 self._models_loaded = True
 
+                for app_config in self.get_app_configs():
+                    app_config.setup()
+
     @property
     def ready(self):
         """

+ 6 - 0
docs/ref/applications.txt

@@ -166,6 +166,12 @@ Methods
     ``model_name``. Raises :exc:`~exceptions.LookupError` if no such model
     exists. ``model_name`` is case-insensitive.
 
+.. method:: AppConfig.setup()
+
+    Subclasses can override this method to perform setup tasks such as
+    registering signals. It is called as soon as the registry is fully
+    populated.
+
 Application registry
 ====================