【问题标题】:Django makemigrations No changes detected in appDjango makemigrations 在应用程序中未检测到更改
【发布时间】:2018-03-29 02:07:31
【问题描述】:

我的 makemigrations 命令有问题。

注意:我已经成功迁移到现在,所以这不是我第一次尝试在这个项目上进行迁移。

我的项目在 INSTALLED_APPS 中。

问题:由于某种原因,项目停止检测我的模型中的任何更改。

在我的项目 models.py 中,我有:

from myproject.myfolder import myModel1
from myproject.myfolder import myModel2
from myproject.myfolder import myModel3

如果将新模型添加为 myModel4 类并将其导入 models.py 中,我会尝试

python mamange.py makemigrations environment=local

我收到No changes detected

我知道有很多关于进行初始迁移的帖子,所以我什至尝试

python manage.py makemigrations myproject environment=local

我什至尝试删除__pycache__ 中的所有文件,但这对我不起作用。

我什至尝试删除数据库并创建新数据库,但它也不起作用。

编辑:

因为我删除了数据库并重新创建,数据库是空的,但我仍然收到相同的消息。

【问题讨论】:

  • 为什么是environmentmyProjectLabel 在您的设置 INSTALLED_APPS 中吗?
  • 是的。正如我所写,这不是第一次迁移。标签环境适用于不同的部署阶段。为每个阶段编写不同的设置(如数据库)
  • 很抱歉,如果它令人困惑。我只是尽量避免这样的建议:你需要在apps.py中写下应用程序的名称。在其他帖子中,这很常见。我编辑帖子。
  • 您是否为要导入myproject/models.py 的新模型设置了app_label = 'myproject'
  • 嗯。你的进口很奇怪。所以你在models.py之外定义了class Foo(models.Model),对吧?尝试:从 myApp.myModelFile 导入 Foo。为此,您需要与 models.py 处于同一级别的 myModelFile。如果它在文件夹中,您应该在其中放置一个空的 init.py 文件,并且: from myApp.myFolder.myModelFile import Foo.

标签: django postgresql django-models makemigrations


【解决方案1】:

我刚刚遇到了这样的问题。就我而言,问题是我通过 pip 安装了我正在开发的包的稳定版本,而 Django 正在导入稳定版本而不是我的开发版本。要检查您是否属于这种情况,请尝试将语法错误添加到 models.py。如果makemigrations 没有触发语法错误,那么您就会知道python 解释器甚至没有加载您的版本。

【讨论】:

  • 这是我的问题 - 如果您像我一样使用 docker,则更有可能发生。
  • @BDuelz Docker 是如何触发这个的?
  • 好吧,我正在运行正确的迁移命令,但我未能 docker build 所以我的 docker 容器没有更新到正确的迁移代码。简单的疏忽,但在我注意到之前几个小时就让我失去了。
【解决方案2】:

如果您的模型不是从 django 模型继承的,那么您将看到上述错误。确保您的自定义模型继承自 django models.Model,类似这样。

from django.db import models

class Posts(models.Model):
    ...

【讨论】:

    【解决方案3】:

    删除数据库并创建新数据库永远不会起作用,因为它引用了以前的迁移文件。删除除 init 之外的所有以前的迁移文件和 pycache 文件。然后尝试运行这些。

        python manage.py migrate --fake-initial
        python manage.py makemigrations
        python manage.py migrate
    

    这对我有用

    【讨论】:

    • 迁移存储在数据库中,删除它 django 将重新应用所有迁移。您不需要删除迁移文件。
    • 不,这不起作用。我已经尝试过了。当我 migrate --fake-initial 它对我说:没有要应用的迁移
    猜你喜欢
    • 2016-07-09
    • 2014-09-14
    • 2016-06-19
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多