Referencing built-in indexes
Indexes are defined in
django.db.models.indexes, but for convenience they’re imported into
django.db.models. The standard convention is to use
from django.db import models and refer to the indexes as
A list of the name of the fields on which the index is desired.
By default, indexes are created with an ascending order for each column. To define an index with a descending order for a column, add a hyphen before the field’s name.
Index(fields=['headline', '-pub_date']) would create SQL with
(headline, pub_date DESC). Index ordering isn’t supported on MySQL. In that case, a descending index is created as a normal index.
Support for column ordering on SQLite
Column ordering is supported on SQLite 3.3.0+ and only for some database file formats. Refer to the SQLite docs for specifics.
The name of the index. If
name isn’t provided Django will auto-generate a name. For compatibility with different databases, index names cannot be longer than 30 characters and shouldn’t start with a number (0-9) or underscore (_).
The name of the database tablespace to use for this index. For single field indexes, if
db_tablespace isn’t provided, the index is created in the
db_tablespace of the field.
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. If neither of those tablespaces are set, the index is created in the same tablespace as the table.
For a list of PostgreSQL-specific indexes, see
© Django Software Foundation and individual contributors
Licensed under the BSD License.