我有一个Django模型,我希望在创建表后向字段添加db_index=True
。
我发现Django没有创建迁移,因此没有创建索引。如果该表不存在且首次创建,则Django会创建索引。
我已阅读Django : db_index and makemigrations,但我想知道手动创建迁移文件是否是一个好主意?
我正在使用MySQL。 Django最佳实践是什么?
答案 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
]
对于对您的应用程序至关重要的表,某些操作团队更喜欢手动添加索引,以便您可以更好地控制创建索引对应用程序产生影响的时间。但这通常是团队偏好的问题