gpt4 book ai didi

python - django 的 makemigrations 中的自动回答

转载 作者:太空宇宙 更新时间:2023-11-04 12:20:24 24 4
gpt4 key购买 nike

我想自动执行 python manage.py makemigrations,就像用户遇到 Did you rename game.last to game.las (a CharField)? [y/N] 那么输入将始终是 y 但如果用户遇到 您正在尝试在没有默认值的情况下向游戏添加不可为空的字段“las” 则自动连续输入1

我试过 是 | python manage.py makemigrations 如所研究的,但是这只会引发无限循环 Please select a valid option if the default input is asked

我的愿望是在我的第一段中提到的 1 和 y 值之间的自动化,或者如果我在默认输入上输入错误的选项则抛出错误。 p>

最佳答案

首先,在本地运行 manage.py makemigrations。它制作了一个脚本来修改数据库架构,这是开发的一部分,并将其放置在 project/migrations 目录中。构建容器,使生成的迁移包含在您的 Docker 容器中(它们应该是自动的,因为它们是 Django 项目源代码树的一部分),并在启动时运行 manage.py migrate --noinput容器。它将自动应用任何尚未应用的迁移。你的迁移会随着时间的推移而增加,但如果你真的需要,你可以压缩它们,我建议不要这样做,除非极少数情况。

这样,您将使开发和生产数据库架构保持同步,并且不会遇到奇怪的错误,因为您在生产环境中生成了开发环境中不存在的新迁移。

我建议有目的地设计您的迁移,这样它们就不需要对 manage.py migrate 进行任何输入。这并不总是可能的,例如,陈旧的模型有时需要输入并且只是保留在那里,除非手动删除。由于您可以使用所有 Django 源代码,因此制作一个假设为 y 的迁移命令版本并将其作为管理命令放置是微不足道的。然后运行该管理命令而不是迁移,完成。我将展示一个示例,但它特定于您运行的 Django 版本。

关于python - django 的 makemigrations 中的自动回答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46190589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com