如何忽略生产中的某些迁移

时间:2019-06-24 15:00:37

标签: django database django-migrations

由于错误,现在生产中存在不一致的地方,我的本地Django迁移和makemigrations命令将生成正确的迁移,该迁移将在我使用空数据库在本地运行时进行。例如,此迁移将生成:

class Migration(migrations.Migration):

    dependencies = [
        ('campaign', '0208_auto_20190619_0929'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='bannerad',
            name='average_price',
        ),
        migrations.RemoveField(
            model_name='bannerad',
            name='click',
        ),
        .... blah
        migrations.AlterField(
            model_name='bannerad',
            name='size',
            field=models.IntegerField(choices=[(0, '120x240'), (1, '120x600'), (2, '970x250'), (3, '160x600'), (4, '240x240'), (5, '300x100'), (6, '300x250'), (7, '468x60'), (8, '600x300'), (9, '728x90')]),
        ),
    ]

,但是在运行生产的产品中,已经迁移的生成的迁移(例如,生产数据库中的Bannerad模型尚未average_price) 当我在生产环境中运行migrate命令时。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以使用--fake参数将迁移标记为已应用

例如伪造直到0209(包括以下)的所有未应用的迁移:

manage.py migrate --fake campaign 0209

请注意,您只能伪造完整的迁移,而不能伪造迁移中的单个操作。