【问题标题】:django makemigrations to rename field without user inputdjango makemigrations 无需用户输入即可重命名字段
【发布时间】:2017-02-13 10:45:37
【问题描述】:

我有一个名为 oldName 的带有 CharField 的模型。我想将该字段重命名为 newName

当我运行 python manage.py makemigrations 时,我收到一个确认请求“您是否将 model.oldName 重命名为 model.newName(一个 CharField)?[y/N]”

但是,我想在 docker 容器内运行整个事情,并且没有提供用户输入的规定。有没有一种无需用户输入即可强制迁移的方法?

PS:我尝试了使用 makemigrations 的 --noinput 选项。在这种情况下,不会应用迁移。

【问题讨论】:

  • 使用migrate 命令应用的迁移。
  • 我在makemigrations 之后运行了migrate 命令
  • 你为什么要在 docker 里面做这个?迁移是源代码的一部分。
  • 这也是一个选择。即使我想在外面做,是否可以跳过用户输入部分。如果有很多这样的例子会有所帮助。
  • 试试这个script_or_command < <(yes y)

标签: python django rename makemigrations


【解决方案1】:

添加了“是”和管道“|”在 docker-compoase.yaml 文件中的命令“python manage.py makemigrations”之前,它应该如下所示:

yes | python manage.py makemigrations

【讨论】:

    【解决方案2】:

    使用

    script_or_command < <(yes y)
    

    但我不确定这是否适用于多个输入提示。

    【讨论】:

    • 我应该在哪里添加这句话?如果我的 docker-compose.yml 文件有这个命令bash -c "python manage.py makemigrations &amp;&amp; python manage.py migrate &amp;&amp; python manage.py runserver 0.0.0.0:8000"
    • @Bito 在您的情况下,最好使用--no-input 选项作为makemigrationsbash -c "python manage.py makemigrations --no-input &amp;&amp; python manage.py migrate &amp;&amp; python manage.py runserver 0.0.0.0:8000".
    • @Bito 另外我建议不要将这种模式用于makemigrations。应手动审核和应用
    猜你喜欢
    • 2020-02-06
    • 1970-01-01
    • 2018-07-31
    • 2020-01-20
    • 2013-10-23
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    相关资源
    最近更新 更多