Django模型(索引)

一丶说明
索引类(index classes)可以轻松的创建数据库索引,使用meta.indexes来添加索引设置.

例如:

from django.db import models

class Customer(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)

class Meta:
indexes = [
models.Index(fields=['last_name', 'first_name']),
models.Index(fields=['first_name'], name='first_name_idx'),
]


indexes默认在django.db.models.indexes中导入,但方便起见,可以使用django.db.models导入
标准规范使用:
from django.db import models
models.<IndexClass>.

Index options(索引设置)
class Index(fields=[], name=None, db_tablespace=None(2.0加入))

作用:
在数据库中创建一个index(索引)B-Tree类型。


参数说明:

1.fields
Index.fields
列表内写入需要索引的字段

默认,列表按照升序排列。要定义一个列的降序的索引,在字段名之前添加连字符即可。

例如:
Index(fields=['headline', '-pub_date'])
SQL语句为(headline, pub_date DESC).

注意:MySQL不支持索引排序。在这种情况下,一个下降的索引被创建为一个正常的索引


2.name
Index.name

索引名,如果没有提供Django将自动提供一个名称,
为了与不同的数据库兼容应注意以下两点:
1.索引名长度不超过30个字符串
2.不能以数字(0-9)和下划线(_)开头


3.db_tablespace(2.0新加入)(表空间)

Index.db_tablespace

索引表空间名称. 对于单子段索引, 如果表空间名称没有给出, 索引将在字段内创建

如果Field.db_tablespace没有指定(或者索引使用多字段), 索引是在model的类元内的db表空间选项中指定的表空间中创建的,如果没有创建表空间, 则索引在与表空间相同的位置创建

原文地址:https://www.cnblogs.com/cangshuchirou/p/9301495.html