在没有 South 的情况下迁移包层次结构中的模型

Migrate models in package hierachy without South

我正在使用 Django 1.8。我的所有模型都放在一个 models.py 文件中,我将它们放在一个看起来像这样的包中:

models/
  - __init__.py
  - Album.py
  - Artist.py

但 Django 的 makemigrations 命令似乎仅在应用程序具有单个 models.py 文件时才有效。 运行 django-admin help makemigrations 不会提示我可以传递给命令以实现我想要的其他选项。此外,我在 SO 上看到的所有其他问题和答案都涉及 South,它与 Django 1.8 不兼容。

那么解决方法是什么?

在你的models.py

添加。

 # myproject/app/models.py:
 from models/Album.py import *
 from models/Artist.py import *

关于 : From migrations has been started supported. Please check Migrations 的注意事项。

在多个文件中水平拆分 Django 模型是一种有效的方法。可以找到很好的解释 here.

Django 在 models 模块中查找您的模型,它可以是文件或有效的 python 包。

如果您有一个有效的 python 包(一个包含 __init__.py 文件的目录),它将尝试根据 __init__.py.[=16= 的内容发现模型]

确保您的 __init__.py 文件如下所示:

from Album import Album
from Artist import Artist

然后 django 应该正确地发现你的模型。