索引类可轻松创建数据库索引。可以通过Meta.indexes选项添加它们 。本文档解释了索引的API引用和index 选项。
引用内置索引
索引是在 django.db.models.indexes 中定义的,但为方便起见,它们被导入到 django.db.models。标准约定是使用from django.db import models 和引用索引models.<IndexClass>。
Index 选项
class Index(fields=(), name=None, db_tablespace=None)
在数据库中创建 B树 索引。
fields
Index.fields
要建立索引的字段名称的列表或元组。
默认情况下,为每列创建一个升序的索引。要为列定义具有降序的索引,请在字段名称前添加 连字符-
。
例如Index(fields=['headline', '-pub_date'])
将创建SQL类似(headline, pub_date DESC)
。不支持在MySQL上的索引排序。在这种情况下,将降序索引创建为普通索引。
在Django 2.1中更改:
旧版本不接受元组。
name
Index.name
索引的名称。如果没有提供name,Django将自动生成一个名称。为了与不同数据库兼容,索引名称不能超过30个字符,并且不应以数字(0-9
)或下划线(_
)开头。
db_tablespace
Index.db_tablespace
Django 2.0中的新功能:
用于此索引的数据库表空间的名称。对于单字段索引,如果未提供db_tablespace,则在字段中的db_tablespace中创建索引。
如果Field.db_tablespace未指定(或者索引使用多个字段),则db_tablespace在模型内的class Meta选项中指定的表空间中创建索引 。如果这两个表空间都未设置,则索引将在与表相同的表空间中创建。
参见
有关PostgreSQL特定索引的列表,请参阅 django.contrib.postgres.indexes。