1. 程式人生 > >Django 2.1.3 模型層 索引

Django 2.1.3 模型層 索引

索引

索引類可輕鬆建立資料庫索引。可以通過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