2015-05-04 32 views
0

我有一个项目有几个应用程序和许多数据模型。我正在使用Django 1.7和Python 2.7。Django 1.7没有找到新的模型w/makemigrations

我已将模型组织到应用程序级模块中。

- common/ 
    -- models/ 
    --- __init__.py 
    --- these_models.py 
    --- those_models.py 

我已经在这个结构中增加一个新的文件和Django的makemigration命令未检测到的变化。

如果我将新模型放入现有模型文件中,迁移文件将完美创建,那么所有内容都将迁移并运行良好。一旦我把它们放入一个新的文件Django没有找到它们。它们不在新的应用程序中 - 它是现有的app/models/模块,只是一个新文件。我不import *(ewwww)在__init__.py或任何东西。

在Django 1.4中,我必须使用Metaapp_label,但不要再这样做。

有什么想法?我需要手动创建迁移文件吗(我这样做没问题)?

+0

http://stackoverflow.com/questions/5534206/how-do-i-separate-my-models-out-in-django – Othman

+0

这与我的问题无关,因为我使用的是Django 1.7。另外,我在我的问题中提到这并不相关。你读过我的问题了吗? – Rico

+0

您应该将模型导入'models'内的'__init __。py'中。没有人告诉你使用'*'。 – snahor

回答

4

Django的不支持,现在在子文件夹模式,而无需指定Meta classapp_label但它仍然是蟒蛇,不会神奇地加载在models文件夹中的所有模块。

您仍然需要将您的模型导入app/models/__init__.py

+0

这是不正确的。我的项目有大约8个模型模块,其中有大约2个模型文件。没有一个是在'app/models/__ init __。py'中导入的。我们只是将所有模型引用为'from app.models.these_models import SomeModel'。 Django似乎很好地处理了这个范例。 (除了这个用例) – Rico

+2

@Rico在这种情况下,你是“幸运”的事实是有这些模型的进口。如果有一段时间,其中一个文件中的模型没有被django自动导入的模块导入,那么'makemigrations'将无法看到模型并将其删除。听起来有点危险!这也是为什么你的新模型没有被makemigrations拾起的问题。没有什么是导入它们。这是一个没有人会期望的依赖关系(删除导入不应导致应用程序工作方式的巨大变化),并且我建议在'__init __。py'中导入,django希望在其中找到它们 –