我有一个 Django 模型,我想在创建表后将 db_index=True
添加到字段。
我发现 Django 不会创建迁移,因此不会创建索引。如果表不存在并且是第一次创建,Django 会创建索引。
我读过 Django : db_index and makemigrations ,但我想知道手动创建迁移文件是否是个好主意?
我正在使用 MySQL。 Django 在这方面的最佳实践是什么?
最佳答案
是的。为此使用手写迁移是完全可以接受的,并且(有时)甚至是最佳实践。甚至有一个特殊的命令可以为这些类型的问题创建空白迁移。
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
]
对于对您的应用程序至关重要的表,一些运营团队更喜欢手动添加索引,这样您就可以更好地控制创建索引对应用程序产生影响的时间。但这通常是团队偏好的问题
关于Django:将 db_index 添加到现有表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41496690/