很多以前我使用./manage.py reset appname
到DROP
等命令,然后为单个App重新创建数据库表。这对于其他开发人员无意中但手动破坏数据库中的某些内容并且您希望在不影响其他应用程序(或需要经历冗长的转储/加载过程)的情况下重新设置内容时非常方便。
Django 1.7及其内置迁移支持的出现似乎已经删除并重命名了很多这些命令,并且我将与文档中的所有共享前缀交叉。有人可以为我拼出这个吗?
如何重置单个应用程序(具有迁移的应用程序)的表?
答案 0 :(得分:2)
如果您的Django迁移子系统本身没有损坏,重置应用程序的正常方法是运行manage.py migrate <app> zero
。
这会使所有应用程序的迁移向后运行,所以有一些值得注意的事情:
如果某些应用的迁移不可逆,则该过程将失败。不应该正常发生,因为Django只会创建可逆迁移。但是,您可以自己构建不可逆转的 - 通常是在创建数据迁移时。
如果某个其他应用依赖此应用,它也会向后迁移到最后一次不依赖它的迁移。
然后,您可以再次运行迁移,因此它会向前运行。
在任何情况下,请记住迁移会给您的数据带来风险,因此请在触摸任何内容之前备份您的数据库。