Django 1.7 - makemigrations未检测到更改

42 浏览
0 Comments

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。

admin 更改状态以发布 2023年5月21日
0
0 Comments

这可能由以下原因引起:

  1. 您没有在 settings.pyINSTALLED_APPS 列表中添加应用程序(您必须根据您使用的django版本,将应用程序名称或apps.py中的AppConfig子类的点路径添加进去)。参考文档: INSTALLED_APPS
  2. 这些应用程序中没有 migrations 文件夹(解决方法:只需要创建该文件夹)。
  3. 这些应用程序中的 migrations 文件夹没有 __init__.py 文件(解决方法:只需创建一个名为 __init__.py 的空文件)。
  4. 应用程序文件夹中没有 __init__.py 文件(解决方法:只需创建一个名为 __init__.py 的空文件)。
  5. 应用程序中没有 models.py 文件。
  6. 您在 models.py 中的Python类(假设为模型)没有继承django.db.models.Model
  7. 您在 models.py 中定义模型时存在某些语义错误。

注意:一个常见错误是将 migrations 文件夹添加到 .gitignore 文件中。当从远程存储库克隆时,本地存储库中将缺少 migrations 文件夹和 / 或 __init__.py 文件。这会导致问题。

应将迁移文件包含在存储库中。点此阅读。如果您的团队经常遇到迁移问题,则可以按以下方式忽略迁移文件:

我建议将以下行添加到 .gitignore 文件中,以忽略迁移文件。

*/migrations/*
!*/migrations/__init__.py

请记住,根据django文档,不推荐将迁移文件添加到gitignore中。

0
0 Comments

如果您正在从django 1.6中已有的应用程序切换到新的版本中,则需要执行文档中列出的一个预备步骤(正如我发现的):

python manage.py makemigrations 你的应用程序标签

文档并没有明确表示您需要将应用程序标签添加到命令中,因为它首先告诉您执行python manage.py makemigrations将失败。 在1.7版本中创建您的应用程序时将执行初始迁移,但如果您是从1.6版本中来的则不会执行。 有关详细说明,请参见文档中的“将迁移添加到应用程序”

0