Django 1.7 - makemigrations未检测到更改
Django 1.7 - makemigrations未检测到更改
正如标题所述,我似乎无法使迁移工作。
这个应用最初是在1.6下,我知道最开始不会有迁移,实际上如果我运行python manage.py migrate
,我会得到:
Operations to perform: Synchronize unmigrated apps: myapp Apply all migrations: admin, contenttypes, auth, sessions Synchronizing apps without migrations: Creating tables... Installing custom SQL... Installing indexes... Running migrations: No migrations to apply.
如果我对myapp
中的任何模型进行更改,它仍然会显示未迁移,这是预期的。
但如果我运行python manage.py makemigrations myapp
,我会得到:
No changes detected in app 'myapp'
无论我用什么方法运行命令,它都无法检测到应用程序有更改,也不会向应用程序添加任何迁移文件。
有没有办法强制应用程序进行迁移,并且基本上说“这是我的基础,用它来工作”或其他什么东西?或者我错过了什么?
如果有帮助,我的数据库是PostgreSQL。
这可能由以下原因引起:
- 您没有在
settings.py
的INSTALLED_APPS
列表中添加应用程序(您必须根据您使用的django版本,将应用程序名称或apps.py中的AppConfig子类的点路径添加进去)。参考文档: INSTALLED_APPS - 这些应用程序中没有
migrations
文件夹(解决方法:只需要创建该文件夹)。 - 这些应用程序中的
migrations
文件夹没有__init__.py
文件(解决方法:只需创建一个名为__init__.py
的空文件)。 - 应用程序文件夹中没有
__init__.py
文件(解决方法:只需创建一个名为__init__.py
的空文件)。 - 应用程序中没有
models.py
文件。 - 您在
models.py
中的Python类(假设为模型)没有继承django.db.models.Model
。 - 您在
models.py
中定义模型时存在某些语义错误。
注意:一个常见错误是将 migrations
文件夹添加到 .gitignore
文件中。当从远程存储库克隆时,本地存储库中将缺少 migrations
文件夹和 / 或 __init__.py
文件。这会导致问题。
应将迁移文件包含在存储库中。点此阅读。如果您的团队经常遇到迁移问题,则可以按以下方式忽略迁移文件:
我建议将以下行添加到 .gitignore
文件中,以忽略迁移文件。
*/migrations/* !*/migrations/__init__.py
请记住,根据django文档,不推荐将迁移文件添加到gitignore中。
如果您正在从django 1.6中已有的应用程序切换到新的版本中,则需要执行文档中列出的一个预备步骤(正如我发现的):
python manage.py makemigrations 你的应用程序标签
文档并没有明确表示您需要将应用程序标签添加到命令中,因为它首先告诉您执行python manage.py makemigrations
将失败。 在1.7版本中创建您的应用程序时将执行初始迁移,但如果您是从1.6版本中来的则不会执行。 有关详细说明,请参见文档中的“将迁移添加到应用程序”。