Django 1.7 - makemigrations没有检测到变化

 双子青春狠别致 发布于 2023-01-01 15:27

正如标题所说,我似乎无法让迁移工作.

该应用程序最初低于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,如果它有帮助的话.

13 个回答
  • 同意@furins.如果一切看起来都是有序的,但是出现了这个问题,请检查是否有任何属性方法与您尝试在Model类中添加的属性具有相同的标题.

      删除与要添加的属性具有相似名称的方法.

      manage.py makemigrations my_app

      manage.py迁移my_app

      添加方法.

    2023-01-01 15:27 回答
  • 我的解决方案没有在这里讨论,所以我发布了它.我一直在syncdb用于一个项目 - 只是为了让它运行起来.然后,当我尝试开始使用Django迁移时,它首先伪造它们然后会说它'OK'但数据库没有发生任何事情.

    我的解决方案是删除我的应用程序的所有迁移文件,以及django_migrations表中应用程序迁移的数据库记录.

    然后我刚做了一个初始迁移:

    ./manage.py makemigrations my_app

    其次是:

    ./manage.py migrate my_app

    现在我可以毫无问题地进行迁移.

    2023-01-01 15:27 回答
  • 好吧,看起来我错过了一个明显的步骤,但发布这个以防其他人也这样做.

    当升级到1.7时,我的模型变得不受管理(managed = False) - 我像True以前一样拥有它们但似乎已经恢复了.

    删除该行(默认为True)然后makemigrations立即运行创建了一个迁移模块,现在它正在运行.makemigrations将不适用于非托管表(事后很明显)

    2023-01-01 15:27 回答
  • 也许这会对某人有所帮助.我正在使用嵌套的应用程序.project.appname和我实际上在INSTALLED_APPS中有project和project.appname.从INSTALLED_APPS中删除项目允许检测更改.

    2023-01-01 15:28 回答
  • 答案是在这个stackoverflow帖子,由Django 1.7中的 cdvv7788 迁移

    如果您是第一次迁移该应用程序,则必须使用:

    manage.py makemigrations myappname一旦你这样做,你可以做:

    manage.py migrate如果您的应用程序在数据库中,修改了它的模型并且没有更新makemigrations上的更改,那么您可能还没有迁移它.将模型更改回原始形式,运行第一个命令(使用应用程序名称)并迁移...它会伪造它.一旦这样做,就可以在模型上放回更改,运行makemigrations并再次迁移,它应该可以正常工作.

    我遇到了同样的麻烦,并且完成了上述工作.

    我已经将我的django应用程序移动到了cloud9,由于某种原因,我从未捕获过初始迁移.

    2023-01-01 15:28 回答
  • 也许我来不及但是你试着migrations在你的应用程序中有一个__init__.py文件夹吗?

    2023-01-01 15:28 回答
  • 如果您要从django 1.6中的现有应用程序进行切换,那么您需要执行文档中列出的一个前置步骤(如我所知):

    python manage.py makemigrations your_app_label

    文档并没有明显表明你需要在命令中添加app标签,因为它告诉你要做的第一件事就是python manage.py makemigrations失败.初始迁移是在1.7版本中创建应用程序时完成的,但如果您来自1.6,则不会执行.有关详细信息,请参阅文档中的"向应用程序添加迁移".

    2023-01-01 15:28 回答
  • 以下为我工作:

      将应用名称添加到settings.py

      使用'python manage.py makemigrations'

      使用'python manage.py migrate'

    为我工作:Python 3.4,Django 1.10

    2023-01-01 15:28 回答
  • 这是一个愚蠢的错误,但在模型类的字段声明行的末尾有一个额外的逗号,使该行无效.

    当您复制粘贴def时会发生这种情况.来自迁移,它本身被定义为一个数组.

    虽然这可能有助于某人:-)

    2023-01-01 15:28 回答
  • 这可能是由于以下原因:

      您没有在INSTALLED_APPS列表中添加应用程序settings.py (您必须在应用程序文件夹中的apps.py中添加AppConfig子类的应用程序名称或虚线路径,具体取决于您使用的django版本).请参阅文档:INSTALLED_APPS

      migrations在这些应用中没有文件夹.(解决方案:只创建该文件夹).

      您没有这些应用程序的__init__.py文件migrations夹内的文件.(解决方案:只需创建一个名为__init__.py的空文件)

      __init__.pyapp文件夹中没有文件.(解决方案:只需创建一个名为__init__.py的空文件)

      models.py的应用中没有文件

      您的Python类(应该是模型)models.py不会继承django.db.models.Model

      你在模型的定义中有一些语义错误 models.py

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

    我建议通过向文件添加以下行来忽略迁移.gitignore文件

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

    2023-01-01 15:28 回答
  • 你要检查settings.pyINSTALLED_APPS列表,并确保所有型号的应用程序是在那里上市.

    makemigrations在项目文件夹中运行意味着它将查看更新与settings.py项目中包含的所有应用程序相关的所有表.一旦你包含它,makemigrations将自动包含应用程序(这节省了大量的工作,因此你不必makemigrations app_name为项目/网站中的每个应用程序运行).

    2023-01-01 15:30 回答
  • 像我这样不喜欢迁移的人可以使用以下步骤.

      删除要同步的更改.

      运行python manage.py makemigrations app_label初始迁移.

      python manage.py migrate在进行更改之前运行以创建表.

      粘贴您在第一步中删除的更改.

      运行2.和3.步骤.

    如果您混淆了这些步骤,请阅读迁移文件.更改它们以更正您的架构或删除不需要的文件,但不要忘记更改下一个迁移文件的依赖项部分;)

    我希望这将有助于将来的某些人.

    2023-01-01 15:31 回答
  • 以防万一您有一个不能由makemigrations标识的特定字段:检查两次是否具有相同名称的属性。

    例:

    field = django.db.models.CharField(max_length=10, default = '', blank=True, null=True)
    
    # ... later
    
    @property
    def field(self):
        pass
    

    该属性将“覆盖”字段定义,因此更改不会被标识 makemigrations

    2023-01-01 15:31 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有