2011-04-14 29 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