2011-04-14 44 views
1

我有一个项目,结构是这样的:执行syncdb忽略进口车型

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's,并且在向__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', 
) 

谢谢!

回答

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

UPDATE:app_label文档:http://docs.djangoproject.com/en/dev/ref/models/options/#app-label

+0

原来的帖子就是这样!谢谢! – Martijn 2011-04-14 13:08:11

0

看起来像您的db模块未包含在您的设置中的INSTALLED_APPS列表中。其他变体的信息不够。

+0

我应该提到它在INSTALLED_APPS。添加到3 .. 2 .. – Martijn 2011-04-14 11:41:11

4

您需要添加app_label = 'db'到模型的元内部类。

+0

修好了,非常感谢! – Martijn 2011-04-14 13:08:45