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'),
),
]
此迁移将删除并重新创建我的索引,这是我想避免的。
从旧语法切换到新语法的推荐方法是什么?我在文档中找不到任何内容。
答案 0 :(得分:2)
您可以编辑生成的迁移,以便索引name
与原始index_together
索引名称匹配,然后使用manage.py migrate
选项运行--fake
。