gpt4 book ai didi

django - 通过迁移将索引添加到Django中的模型字段

转载 作者:行者123 更新时间:2023-12-04 01:59:16 25 4
gpt4 key购买 nike

我正在尝试使用Field.db_index为具有迁移的应用程序在模型字段上添加索引。查看Django's documentation我要做的就是设置db_index=True

class Person(models.Model):
first_name = models.CharField()
last_name = models.CharField(db_index=True)


然后我首先尝试了新的Django的Migration:

./manage.py makemigrations app-name


但是迁移似乎没有注意到更改,也没有添加用于创建索引的sql命令。所以我按照 here的解释尝试了 django-admin.py

django-admin.py sqlindexes app-name


但这也不打印sql命令,它退出并显示以下错误:

CommandError: App 'app-name' has migrations. Only the sqlmigrate and sqlflush commands can be used when an app has migrations.

最佳答案

好的,我设法使用Meta.index_together创建索引。这不是最干净的方法,因为我实际上并未将多个字段一起索引,但它可用于makemigrations

class Person(models.Model):
class Meta():
index_together = [['last_name']]
first_name = models.CharField()
last_name = models.CharField()


现在 makemigrations确实进行了新的迁移:

./manage.py makemigrations app-name

>>Migrations for 'app-name':
>> 0005_auto_20140929_1540.py:
>> - Alter index_together for Person (1 constraint(s))


相应的sql命令实际上是 CREATE INDEX

./manage.py sqlmigrate app-name 0005_auto_20140929_1540

>>BEGIN;
>>CREATE INDEX app-name_person_last_name_7...4_idx ON `app-name_person` (`last_name`);
>>COMMIT;

关于django - 通过迁移将索引添加到Django中的模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26109184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com