【问题标题】:Django migrating app without migrations没有迁移的Django迁移应用程序
【发布时间】:2016-04-14 05:11:43
【问题描述】:

我创建了一个由单个应用程序组成的新 Django 项目。我认为 Django 只有在存在迁移时才会迁移应用程序。

我第一次运行 python manage.py migrate 时,Django 也会为我的应用创建表(我已经为我的应用创建了 models.py)

到目前为止,我还没有运行 python manage.py makemigrations apppython manage.py makemigrations

我会在运行python manage.py migrate 时得到以下输出:

Synchronizing apps without migrations:
  Creating tables...
    Creating table app_model

这不是我想要的,因为下次我真正为应用程序进行迁移并运行迁移时,Django 会抱怨表已经存在。

【问题讨论】:

    标签: python django


    【解决方案1】:

    您可以创建迁移,并伪造第一个迁移:

    python manage.py makemigrations <app_name>
    python manage.py migrate --fake-initial
    

    这将跳过已为其创建表的任何初始迁移。

    Django(1.9 之前)将同步任何没有迁移的应用程序,请参阅migrate 上的文档:

    此命令的行为会根据提供的参数而改变:

    • 无参数:所有迁移的应用都运行所有迁移,并且所有未迁移的应用都与数据库同步,

    【讨论】:

    • 我知道我能做到。我只是担心为什么 Django 在没有为它们创建迁移的情况下迁移我的应用程序。这是必需的,因为我需要在应用之前检查迁移文件,而我在这里无法做到。
    • 这就是 Django 在 1.9 之前的操作方式。如果您想测试迁移,您可以随时使用migrate &lt;app_name&gt; zero 迁移回来,然后重新运行迁移。
    • 您能否将我指向此文档并将您的评论添加到答案中
    【解决方案2】:

    如果您想为应用程序保存 migrations,那么您已经迁移了。您可以更改模型中的一个字段,然后 makemigrations this_app -> migrate 并再次返回 makemigrationsmigrate。但我不明白你为什么要这个。

    【讨论】:

    • 我不希望 Django 在没有我为它进行迁移的情况下迁移任何应用程序。这就是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2020-10-14
    • 2019-06-23
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2019-12-24
    相关资源
    最近更新 更多