Gor*_*oro 9 python django orm model
在可维护性的名义下,我将一些较大的模型移动到了自己的文件中.所以在我这之前:
app/
models.py
Run Code Online (Sandbox Code Playgroud)
现在我有了这个:
app/
models/
__init__.py
model_a.py
model_b.py
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我使用manage.py来执行同步数据库时,它不再为这些模型创建表.
我忘记了什么吗?
谢谢,
jb.*_*jb. 18
模型必须在名为app.modelswhere appapp is app name的模块中找到.所以你应该写入app/models/__init__.py文件
from model_a import *
from model_b import *
Run Code Online (Sandbox Code Playgroud)
注意fron django 1.7以后这不是必要的.
而且---(这就是我遇到的问题)你必须手动更新app_label模型的属性,所以写:
__all__ = ["ModelA", "ModelA1"]
class ModelA(models.Model):
class Meta:
app_label = 'your_app'
Run Code Online (Sandbox Code Playgroud)
没有它应用程序将被django错误地设置.
如果你是from model_a import *邪恶的,那么你总是可以__all__在所有模块中设置属性.
您需要Meta.app_label为每个模型设置它所属的应用程序名称,并确保从中导入它们models/__init__.py.
您可以在这里查看更多详细信息:https://code.djangoproject.com/wiki/CookBookSplitModelsToFiles