在没有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不兼容。

那么解决方法是什么呢?

在多个文件中横向拆分django模型是一种有效的方法。在这里可以找到一个很好的解释。

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

如果您有一个有效的python包(一个包含__init__.py文件的目录(,它将尝试基于__init__.py的内容来发现模型。

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

from Album import Album
from Artist import Artist

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

models.py

添加。

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

关于django-south的注意事项:从django-1.7迁移已经开始支持。请检查迁移。

最新更新