Django:将db_index添加到现有表

时间:2017-01-05 23:45:42

标签: django database

我有一个Django模型,我希望在创建表后向字段添加db_index=True

我发现Django没有创建迁移,因此没有创建索引。如果该表不存在且首次创建,则Django会创建索引。

我已阅读Django : db_index and makemigrations,但我想知道手动创建迁移文件是否是一个好主意?

我正在使用MySQL。 Django最佳实践是什么?

1 个答案:

答案 0 :(得分:8)

是。它是完全可以接受的,并且(有时)甚至是最好的做法,为此使用手写迁移。甚至还有一个特殊的命令可以为这些类型的问题创建空白迁移。

python manage.py makemigrations --empty --name create_table_index 

并按照链接中发布的示例进行编辑:

class Migration(migrations.Migration):

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

    operations = [
        migrations.RunSQL("CREATE INDEX idx_column ON my_table (my_column)"),
        # this format should also work for mysql
    ]    

对于对您的应用程序至关重要的表,某些操作团队更喜欢手动添加索引,以便您可以更好地控制创建索引对应用程序产生影响的时间。但这通常是团队偏好的问题