Django迁移:如何从模型的当前状态生成数据库(旧的syncdb --all)

问题描述 投票:4回答:1

通常,当我开始研究已经开发了一段时间的django + south项目时,我没有费心应用所有数百次迁移只是为了进入数据库的当前状态。我直接让syncdb --all从当前模型状态创建数据库,然后运行migrate --fake将所有迁移标记为已通过。

在几秒钟内,我有了一个与迁移同步的数据库。 Syncdb装载了初始装置。 99%的案例这就是我所需要的。我很高兴。

我现在该怎么办? Syncdb已弃用,migrate命令没有忽略迁移的选项,只是从模型类的当前状态创建数据库。

迁移命令使我经历了数月的项目开发过程中的大量迁移。这些迁移有一些我甚至不关心的奇怪错误。它也非常慢,好像在迁移引擎的实现中搞砸了一些东西。

我只想说:“嘿,Django,这是模型,从模型中创建一个数据库,然后假冒所有迁移,让我们从那里开始工作”。

我知道我可以在本地删除所有迁移,为所有应用创建首字母并应用它们但这对于相当于syncdb --all来说似乎是一种非常奇怪的解决方法。

我错过了什么吗?

django
1个回答
0
投票

你可以使用--fake标志来做到这一点。它将忽略所有已通过的迁移并从现在开始迁移。像这样:

python manage.py migrate --fake

此外,如果您要设置迁移的当前状态(例如,假设您在应用上的最后一次迁移是以_____开始的,那么以0004开头)

python manage.py migrate --fake my_app 0004

注意

也有一些选择:

python manage.py migrate --fake my_app zero

python manage.py migrate --fake-initial
© www.soinside.com 2019 - 2024. All rights reserved.