mirror of https://github.com/django/django.git
Fixed #18907 -- Correct docs regard population of model backrefs.
Thanks simonpercivall for the report and Aymeric for the patch.
This commit is contained in:
parent
66f546b906
commit
5c7ac7494a
|
@ -1280,11 +1280,16 @@ relationship on one end.
|
||||||
But how is this possible, given that a model class doesn't know which other
|
But how is this possible, given that a model class doesn't know which other
|
||||||
model classes are related to it until those other model classes are loaded?
|
model classes are related to it until those other model classes are loaded?
|
||||||
|
|
||||||
The answer lies in the :setting:`INSTALLED_APPS` setting. The first time any
|
The answer lies in the :data:`app registry <django.apps.apps>`. When Django
|
||||||
model is loaded, Django iterates over every model in :setting:`INSTALLED_APPS`
|
starts, it imports each application listed in :setting:`INSTALLED_APPS`, and
|
||||||
and creates the backward relationships in memory as needed. Essentially, one of
|
then the ``models`` module inside each application. Whenever a new model class
|
||||||
the functions of :setting:`INSTALLED_APPS` is to tell Django the entire model
|
is created, Django adds backward-relationships to any related models. If the
|
||||||
domain.
|
related models haven't been imported yet, Django keeps tracks of the
|
||||||
|
relationships and adds them when the related models eventually are imported.
|
||||||
|
|
||||||
|
For this reason, it's particularly important that all the models you're using
|
||||||
|
be defined in applications listed in :setting:`INSTALLED_APPS`. Otherwise,
|
||||||
|
backwards relations may not work properly.
|
||||||
|
|
||||||
Queries over related objects
|
Queries over related objects
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
Loading…
Reference in New Issue