Django 1.7对应用程序的工作原理进行了一些明显的重大改变
https://docs.djangoproject.com/en/dev/releases/1.7/#app-loading-refactor
这些发行说明似乎表示您可以在models.py
之外定义模型,我们甚至不需要在应用内部使用models.py
(或models/__init__.py
)。
我误解了这个吗?如果没有,有人可以解释我们定义模型的位置,如果它们不在models.py
中,那么django如何找到并加载它们?
答案 0 :(得分:1)
您仍应在models.py
中定义模型。
在1.7中的应用重构之前,没有统一的API来声明有关您应用的元数据。特别是,Django通过查找models.py
文件确定是否有应用程序的方式。这不是一个优雅的系统,特别是当你认为某些应用程序甚至没有模型时(例如,应用程序可能只提供管理命令)。
既然存在AppConfig
API,就不再需要存在models.py
。但是,它仍然是定义模型的自然和默认位置。
django如何找到并加载它们?
来自documentation:"您必须在应用的models.py
或models/__init__.py
中定义或导入所有模型。"
这表明以下做法:如果您没有任何模型,请不要包含models.py
。如果您有一个文件的模型,请将它们放在models.py
中。如果您有一堆模型并希望将它们分散到多个文件中,请将这些文件放在models
子模块中,然后将其内容导入models/__init__.py
。