Django:如何迁移到基于类的索引

时间:2017-07-24 19:25:23

标签: django django-models django-migrations

Django 1.11介绍了Class-based model indexes。以前定义为

的内容
class A(models.Model):
    class Meta:
        index_together = [
            ('foo', 'bar'),
        ]

现在可以定义为

class A(models.Model):
    class Meta:
        indexes = [
            models.Index(fields=['foo', 'bar']),
        ]

当我更改为运行python manage.py makemigrations的模型的新语法时,它将创建像

这样的迁移
class Migration(migrations.Migration):

    dependencies = [
        ('app', '0001_initial'),
    ]

    operations = [
        migrations.AlterIndexTogether(
            name='a',
            index_together=set([]),
        ),
        migrations.AddIndex(
            model_name='a',
            index=models.Index(fields=['foo', 'bar'], name='app_a_f12345_idx'),
        ),
    ]

此迁移将删除并重新创建我的索引,这是我想避免的。

从旧语法切换到新语法的推荐方法是什么?我在文档中找不到任何内容。

1 个答案:

答案 0 :(得分:2)

您可以编辑生成的迁移,以便索引name与原始index_together索引名称匹配,然后使用manage.py migrate选项运行--fake