summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Palmer <evjpalmer@gmail.com>2016-06-03 11:15:32 -0700
committerTim Graham <timograham@gmail.com>2016-06-04 11:47:55 -0400
commit84d8d1d7151a4ee70ae35037d37f76a40d18da64 (patch)
treeced673b2dbcb2262525ab663fbefb5e361e2b5a7
parentdc88516e5bc987dfc877bc8ae5d7f8d1efb19fdd (diff)
Fixed #25127 -- Documented how to organize models in a package.
-rw-r--r--docs/topics/db/models.txt24
1 files changed, 24 insertions, 0 deletions
diff --git a/docs/topics/db/models.txt b/docs/topics/db/models.txt
index 69562f6544..d08d044979 100644
--- a/docs/topics/db/models.txt
+++ b/docs/topics/db/models.txt
@@ -1410,6 +1410,30 @@ different database tables).
Django will raise a :exc:`~django.core.exceptions.FieldError` if you override
any model field in any ancestor model.
+Organizing models in a package
+==============================
+
+The :djadmin:`manage.py startapp <startapp>` command creates an application
+structure that includes a ``models.py`` file. If you have many models,
+organizing them in separate files may be useful.
+
+To do so, create a ``models`` package. Remove ``models.py`` and create a
+``myapp/models/`` directory with an ``__init__.py`` file and the files to
+store your models. You must import the models in the ``__init__.py`` file.
+
+For example, if you had ``organic.py`` and ``synthetic.py`` in the ``models``
+directory:
+
+.. snippet::
+ :filename: myapp/models/__init__.py
+
+ from .organic import Person
+ from .synthetic import Robot
+
+Explicitly importing each model rather than using ``from .models import *``
+has the advantages of not cluttering the namespace, making code more readable,
+and keeping code analysis tools useful.
+
.. seealso::
:doc:`The Models Reference </ref/models/index>`