Django 1.7没有找到具有makemigrations的新模型

Ric*_*ico 1 python django django-migrations

我有一个包含多个应用程序和许多数据模型的项目.我正在使用Django 1.7和Python 2.7.

我已将模型组织成app级模块.

- common/
  -- models/
    --- __init__.py
    --- these_models.py
    --- those_models.py
Run Code Online (Sandbox Code Playgroud)

我在这个结构中添加了一个新文件,Django的makemigration命令没有检测到更改.

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

在Django 1.4中,我不得不使用它Meta,app_label但不要再这样做了.

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

Yuj*_*ita 6

Django现在支持子文件夹中的模型而无需指定Meta class,app_label但它仍然是python并且不会神奇地加载models文件夹中的所有模块.

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

  • @Rico在这种情况下你会因为这些模型的进口而"变得幸运".如果有一段时间其中一个文件中的模型没有被django自动导入的模块导入,那么`makemigrations`将无法看到模型并将其删除.听起来有点危险!这也是为什么你的新模型没有被makemigrations选中的问题.什么都没有导入它们.这是一个没人想到的依赖(删除导入不应该导致应用程序工作方式发生大的变化),我建议导入`__init __.py`,其中django希望找到它们 (2认同)