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 as registering signals. It is called as soon as the registry is fully
populated. populated.
You cannot import models in modules that define application configuration Although you can't import models at the module-level where
classes, but you can use :meth:`get_model` to access a model class by :class:`~django.apps.AppConfig` classes are defined, you can import them in
name, like this:: ``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): def ready(self):
# importing model classes
from .models import MyModel # or...
MyModel = self.get_model('MyModel') MyModel = self.get_model('MyModel')
# registering signals with the model's string label
pre_save.connect(receiver, sender='app_label.MyModel')
.. warning:: .. warning::
Although you can access model classes as described above, avoid Although you can access model classes as described above, avoid