我有一个项目,结构如下:
project/
__init__.py
db/
models/
__init__.py
article.py
project.py
ontology/
__init__.py
coded.py
它有点大,但这就是主意。 models.__init__.py
包含:
from db.models.article import *
from db.models.project import *
from db.models.ontology.coded import *
运行syncdb时,它会忽略models.__init__.py
中导入的所有模型。没有ImportError
,并且在向__init__.py
添加打印语句时,它会愉快地打印导入模型(在运行syncdb时)。
__init__.py
中的模型已定义。
为什么?我可以强制syncdb来考虑导入的模型吗?
编辑:INSTALLED_APPS中的应用程序 :
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'amcatnavigator.navigator',
'amcatnavigator.db',
)
谢谢!
答案 0 :(得分:4)
您需要将app_label = 'db'
添加到模型的Meta内部类中。
答案 1 :(得分:3)
根据South(syncdb)文档:http://south.aeracode.org/docs/tutorial/part1.html它将仅为settings.py文件中INSTALLED_APPS部分中的那些模型创建表。如果正在使用模型,但它已更改并且您不想丢失任何数据 - 请使用迁移:http://south.aeracode.org/docs/tutorial/part1.html#the-first-migration
更新:据我所知,Django设计不会在不同的目录中找到模型:http://code.djangoproject.com/ticket/14007你可能想要使用app_label
更新:app_label docs:http://docs.djangoproject.com/en/dev/ref/models/options/#app-label
答案 2 :(得分:0)
您的db
模块似乎未包含在您设置的INSTALLED_APPS
列表中。对于其他变种来说,这还不够。