1

我有一个项目,结构如下:

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',
)

谢谢!

4

3 回答 3

4

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

于 2011-04-14T12:21:47.093 回答
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 文档:http ://docs.djangoproject.com/en/dev/ref/models/options/#app-label

于 2011-04-14T11:35:41.733 回答
0

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

于 2011-04-14T11:29:40.317 回答