索引是数据库表中对一列或多列的值进行排序的一种结构。默认情况下,Django为模型的主键和外键创建索引。索引可以提高表的查询,更新和删除速度,但会降低表的插入速度。
1、使用字段选项创建索引
与索引有关的字段选项:
db_index: 为True时,为字段创建索引
primary_key: 为True时,字段为模型的主键,为字段创建索引
unique: 为True时,为字段创建唯一索引。
from django.db import models
class test1(models.Model):
field1=models.CharField(max_length=200,db_index=True) # 为字段创建普通索引
field2 = models.CharField(max_length=200, unique=True) # 为字段创建唯一索引
2、在Meta子类中创建索引
模型的Meta子类用于为模型定义描述相关属性的元数据。Meta类indexes选项用于为模型定义索引
class test2(models.Model):
field1 = models.CharField(max_length=200)
field2 = models.CharField(max_length=200)
class Meta:
indexes=[models.Index(fields=['field1'],name='id_field1') ] # 定义索引
参数fields设置用于创建索引的字段,参数name设置索引名称。如果需要创建基于多个字段的索引,可在参数fields中包含多个字段名称,例如,fields=['field1','field2']
在模型Meta子类中,还可以使用unique_together属性创建组合唯一索引。组合唯一索引要求多个字段的组合值在表中唯一。
class test3(models.Model):
field1 = models.CharField(max_length=200)
field2 = models.CharField(max_length=200)
class Meta:
unique_together = ('field1','field2') # 创建组合唯一索引
生成迁移文件
应用迁移文件完成迁移操作
python自动生成.py