为了将模型放置在子文件夹中,我尝试使用here中所述的app_label Meta字段。
我的目录结构如下所示:
项目
应用
富
楷模
__init__.py
bar_model.py
在bar_model.py中,我这样定义我的模型:
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
我可以像这样成功导入模型:
from apps.foo.models.bar_model import SomeModel
但是,运行:
./manage.py syncdb
不会为模型创建表。但是,在详细模式下,我确实可以正确识别应用程序“ foo”(位于settings.py中的INSTALLED_APPS中)。将模型移动到foo下的models.py确实可以。
是否有一些特定的约定未用app_label或整个机制记录下来,以防止该模型结构被syncdb识别?
最佳答案
请参阅Django故障单#10985: Explain how models can be organised in a directory
可能是您没有将模型导入__init__.py
?