Django:如何迁移到基于 class 的索引
Django: How to migrate to class-based indexes
引入了 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'),
),
]
此迁移将删除并重新创建我的索引,这是我想避免的事情。
从旧语法切换到新语法的推荐方法是什么?我在文档中找不到任何内容。
您可以编辑生成的迁移,使索引 name
与原始 index_together
索引名称匹配,然后 运行 manage.py migrate
与 --fake
选项匹配。
引入了 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'),
),
]
此迁移将删除并重新创建我的索引,这是我想避免的事情。
从旧语法切换到新语法的推荐方法是什么?我在文档中找不到任何内容。
您可以编辑生成的迁移,使索引 name
与原始 index_together
索引名称匹配,然后 运行 manage.py migrate
与 --fake
选项匹配。