以可维护性的名义,我将一些较大的模型移到了它们自己的文件中。所以在我有这个之前:
app/
models.py
现在我有了这个:
app/
models/
__init__.py
model_a.py
model_b.py
这工作正常,但是当我使用 manage.py 执行同步数据库时,它不再为这些模型创建表。
我是不是忘记了什么?
谢谢,
最佳答案
模型必须在名为 app.models
的模块中找到,其中 app
是应用名称。所以你应该写在app/models/__init__.py
文件
from model_a import *
from model_b import *
在 Django <1.7
注意从 django 1.7 开始,这不是必需的。
此外 ---(这就是我遇到的问题)您将不得不为您的模型手动更新 app_label
属性,所以写:
__all__ = ["ModelA", "ModelA1"]
class ModelA(models.Model):
class Meta:
app_label = 'your_app'
如果没有它,django 将错误地设置应用程序。
如果你害怕 from model_a import *
是邪恶的,你总是可以在所有模块中设置 __all__
属性。
关于python - 将 Django 模型移动到它们自己的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319430/