我刚刚开始研究代码库,我加入的团队正在使用Django 1.4更新为Django 1.8。随着这一变化,它被重组为单独的应用程序,并且布局正在以各种方式进行更改。
INSTALLED_APPS
有一些应用,我们称之为foo
和bar
,但他们的models.py
个文件已放入db
个子目录,那是foo/db/models.py
。
可以使用from foo.db.models import SomeModel
从代码(例如视图)访问这些模型,这似乎有效。
但是,从我对https://docs.djangoproject.com/en/1.8/ref/applications/#initialization-process的阅读,特别是第2阶段,foo/db/models.py
中定义的模型而不是foo/models.py
中的模型在应用程序加载过程中无法找到,这将导致多样化问题。
是否可以使用自定义models.py
或以其他方式支持此AppConfig
的非标准位置?
为了澄清,我认为试图在非标准位置models.py
是一个坏主意;我确认后会帮助我向团队其他成员提出我的论点。
答案 0 :(得分:4)
models
子模块名称是硬编码的,它是Django在初始化过程的这一步骤中导入的唯一模块。
但是,您可以轻松地在models.py
文件中导入模型,以确保在正确的时间导入模型。如果您在foo.db.models
中定义或导入了所有应用的模型,则只需使用此功能:
# foo/models.py
from foo.db.models import *