Django makemigrations重命名字段而无需用户输入

6

我有一个CharField型号,名为oldName。 我想将该字段重命名为newName

当我运行python manage.py makemigrations时,我会收到一个确认请求"Did you rename model.oldName to model.newName (a CharField)? [y/N]"

但是,我想在docker容器中运行整个过程,而且没有提供用户输入的工具。 有没有一种方法可以强制进行迁移而不需要用户输入?

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


使用migrate命令应用数据库迁移。 - Sardorbek Imomaliev
2
你为什么想要在 Docker 内部执行这个操作?迁移是你的源代码的一部分。 - Sardorbek Imomaliev
尝试执行以下命令:script_or_command < <(yes y) - Sardorbek Imomaliev
这对我有帮助。谢谢 :) - Krishna Kishore Andhavarapu
不用谢。接下来回答问题。 - Sardorbek Imomaliev
显示剩余2条评论
2个回答

4

在命令前添加yes和管道符|

python manage.py makemigrations | yes

在docker-compose.yaml文件中添加并按照下列方式操作:

yes | python manage.py makemigrations

1
使用

标签。

script_or_command < <(yes y)

但我不确定这对于多个输入提示会起作用。


我应该把这句话加在哪里?如果我的docker-compose.yml文件有这个命令 bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000" - Bito
1
在您的情况下,最好使用 --no-input 选项来运行 makemigrations。命令如下:bash -c "python manage.py makemigrations --no-input && python manage.py migrate && python manage.py runserver 0.0.0.0:8000" - Sardorbek Imomaliev
@Bito 我建议不要在 makemigrations 中使用这个模式。应该手动审查和应用。 - Sardorbek Imomaliev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接