【发布时间】:2016-10-15 16:33:52
【问题描述】:
在创建可重用应用程序时,我应该将我定义的所有模型放入单个文件 models.py 还是将模型分组到多个文件中,例如 topic1.py、topic2.py?
请描述所有赞成和反对的理由。
【问题讨论】:
在创建可重用应用程序时,我应该将我定义的所有模型放入单个文件 models.py 还是将模型分组到多个文件中,例如 topic1.py、topic2.py?
请描述所有赞成和反对的理由。
【问题讨论】:
models 子模块的特殊之处在于它会在初始化过程中的特定时间自动导入。此时也应导入所有模型。您不能更早地导入它们,并且稍后导入它们可能会导致错误。
您可以在不同的模块中定义您的模型,但您应该始终将所有模型导入您的models.py 或models/__init__.py。例如:
# models/topic1.py
class Topic1(models.Model):
...
# models/__init__.py
from .topic1 import Topic1
如果您将每个模型导入models.py 或models/__init__.py,这也允许您直接从该文件导入所有模型。在示例中,这意味着您可以从myapp.models 导入Topic1,而不仅仅是从myapp.models.topic1。这样,您可以在多个文件中组织您的模型,而无需在需要导入它们时记住每个模型的精确位置。
【讨论】:
models/中的模型会自动导入吗? (空__init__.py)
models 模块。按照 python 的标准,这意味着实际上只加载了 __init__.py 文件。要加载models/ 目录中的其他文件,您需要单独导入它们。
这取决于你定义了多少模型,如果你只有 1 到 5 个类模型,只需将它放在一个文件中,但如果你有 5 个以上的类模型,我建议将它放在多个文件中,
但根据我的经验,如果模型放入多个文件,在导入内容时会变得有点麻烦,
【讨论】:
models/ 目录中,以便 Django 找到它们,对吧?还是没有?