Fixed #26616 -- Clarified model usage in AppConfig.ready().

This commit is contained in:
Kevin Christopher Henry 2016-08-11 04:59:19 -04:00 committed by Tim Graham
parent 4773ed2e31
commit ff445f4c19
1 changed files with 17 additions and 3 deletions

View File

@ -239,13 +239,27 @@ Methods
as registering signals. It is called as soon as the registry is fully
populated.
You cannot import models in modules that define application configuration
classes, but you can use :meth:`get_model` to access a model class by
name, like this::
Although you can't import models at the module-level where
:class:`~django.apps.AppConfig` classes are defined, you can import them in
``ready()``, using either an ``import`` statement or
:meth:`~AppConfig.get_model`.
If you're registering :mod:`model signals <django.db.models.signals>`, you
can refer to the sender by its string label instead of using the model
class itself.
Example::
from django.db.models.signals import pre_save
def ready(self):
# importing model classes
from .models import MyModel # or...
MyModel = self.get_model('MyModel')
# registering signals with the model's string label
pre_save.connect(receiver, sender='app_label.MyModel')
.. warning::
Although you can access model classes as described above, avoid