首页 > 解决方案 > Django:迁移期间如何提示用户?

问题描述

我正在编写一个将 ForeignKeyField 转换为 ManyToManyField 的迁移。此迁移的一部分涉及数据迁移。向前迁移很容易,不需要用户交互。然而,理想情况下,向后迁移需要用户选择 m2m 中的哪个成为外键(即识别数据丢失)。

此外。执行迁移的用户可能希望获得一个 python shell,以便他们可以在回答问题之前四处寻找并查看对象。

并且一些用户可能不在乎,并且可能根本不想被提示。(即他们在迁移期间使用 --no-input 参数)

django 是否有内置机制来完成这一切?我找不到任何东西,但在我的脑海里,它似乎是我在某个地方看到的东西。

标签: pythondjangomigration

解决方案


如果您确实需要在迁移期间以交互方式询问用户输入,您可以使用django.db.migrations.questionerInteractiveMigrationQuestioner中的。

将其子类化,添加您自己的问题(例如ask_which_instance)及其参数。您可以使用该_ask_choice方法让用户从多个选项中进行选择。

然后在您的backward()方法中,实例化它并调用您的 question 方法(如果您提供 3 个选项,它应该返回用户的输入,例如 1、2 或 3)。


推荐阅读