模型索引参考

Django 1.11新增功能

索引类便于创建数据库索引。 可以使用Meta.indexes选项添加它们。 本文档解释了包含索引选项Index的API参考。

引用内置索引

索引是在django.db.models.indexes中定义的,但为了方便起见,它们被导入到django.db.models中。 The standard convention is to use from django.db import models and refer to the indexes as models.<IndexClass>.

Index选项

Index(fields=[], name=None, db_tablespace=None)[source]

在数据库中创建一个索引(B-Tree)。

fields

指数。字段 T0> ¶ T1>

索引所需字段的名称列表。

默认情况下,索引是按照每列的升序创建的。 要按列降序排列索引,请在字段名称前添加连字符。

For example Index(fields=['headline', '-pub_date']) would create SQL with (headline, pub_date DESC). MySQL不支持索引排序。 在这种情况下,降序索引被创建为正常索引。

支持SQLite的列排序

SQLite 3.3.0+支持列排序,只适用于某些数据库文件格式。 有关细节,请参阅SQLite文档

name

指数。名称 T0> ¶ T1>

索引的名称。 如果name没有提供,Django会自动生成一个名字。 为了兼容不同的数据库,索引名称不能超过30个字符,不应以数字(0-9)或下划线(_)开头。

db_tablespace

指数。 db_tablespace T0> ¶ T1>
Django 2.0新增功能

用于此索引的database tablespace的名称。 对于单字段索引,如果未提供db_tablespace,则会在该字段的db_tablespace中创建索引。

If Field.db_tablespace isn’t specified (or if the index uses multiple fields), the index is created in tablespace specified in the db_tablespace option inside the model’s class Meta. 如果这两个表空间都没有设置,则索引将在表中创建在同一个表空间中。

也可以看看

有关PostgreSQL特定索引的列表,请参阅django.contrib.postgres.indexes