Django : db_index and makemigrations

4
我想在我的模型中为现有字段添加一些 db_index。我只需在模型中添加 db_index=True
我原本认为需要运行 python manage.py migrate 来将其应用到数据库。但是我的问题是没有检测到任何更改,因此没有创建迁移。这是正常的行为吗?
还是有我不知道的特定行为?
谢谢。

使用哪个Django版本? - doniyor
目前使用的是Django 1.7,计划很快迁移到Django 1.9。 - Alex Grs
2个回答

1
如果您了解足够的SQL知识,仍然可以使用RunSQL手动创建迁移。
例如:(使用PostgreSQL语法)
class Migration(migrations.Migration):

    dependencies = [
        ('your_app', '0001_initial'), # or last mig
    ]

    operations = [
        migrations.RunSQL("CREATE INDEX my_table_my_column_ind ON my_table (my_colum)"),
    ]

相关文章: 使用Django 1.7创建部分索引


0

你可以使用索引在一起

class YourModel(models.Model):
    # ...

    class Meta:
        index_together = ["field_that_needs_index"]

然后 makemigration 应该可以工作


真的没有办法只添加db_index吗?我需要在我的模型上创建2/3个索引。 - Alex Grs
将db_index设置在字段中,但需要进行迁移,因此还需在index_together中添加这些字段。 - doniyor
好的。那我该如何检查我的索引是否已创建?创建这些 index_together 会不会对写入或数据库大小造成影响? - Alex Grs
@AlexGrs 没有问题。SHOW INDEX FROM [tablename] 会显示你的表中的索引。 - doniyor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接