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

Django:如何迁移到基于类的索引,django,django-models,django-migrations,Django,Django Models,Django Migrations,介绍了Django 1.11。以前定义为什么 A类(models.Model): 类元: 索引_一起=[ (‘foo’、‘bar’), ] 现在可以定义为 A类(models.Model): 类元: 索引=[ models.Index(字段=['foo','bar']), ] 当我为一个运行python manage.py makemigrations的模型更改新语法时,它将创建如下迁移 类迁移(migrations.Migration): 依赖项=[ (‘app’、‘0001_首字母’),

介绍了Django 1.11。以前定义为什么

A类(models.Model):
类元:
索引_一起=[
(‘foo’、‘bar’),
]
现在可以定义为

A类(models.Model):
类元:
索引=[
models.Index(字段=['foo','bar']),
]
当我为一个运行
python manage.py makemigrations
的模型更改新语法时,它将创建如下迁移

类迁移(migrations.Migration):
依赖项=[
(‘app’、‘0001_首字母’),
]
操作=[
迁移(
name='a',
联合索引=集合([]),
),
migrations.AddIndex(
型号_name='a',
index=models.index(字段=['foo','bar'],name='app\u a\u f12345\u idx'),
),
]
这次迁移将删除并重新创建我的索引,这是我希望避免的


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

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

我认为不应该将Index类与
Index\u一起使用。只需对多个字段使用
索引
。这是我的错误。应该一直都是这样。我已经解决了这个问题。好主意!不知何故,似乎奇怪的是,没有一种更简单(或任何文档记录)的方法来实现这一点。此外,我还必须重命名我的索引,因为一些旧的自动生成的索引超过了索引类施加的30个字符的限制。我完全不明白为什么需要切换到
索引
语法。只有当我需要跳过为
之类的
查找创建额外索引(当PostgreSQL后端使用
db_index=True
时,会自动为字符字段生成)或需要
GinIndex
brindex
时,我才使用新语法。我同意通常不需要切换。然而,当我确实有理由用“indexes”的方式定义索引时,我希望将该类的所有索引都移到那里。似乎没有官方/推荐的方式,因此这似乎是我将其标记为已接受的唯一合理的解决方案。