Django 自定义表名和建立索引

通过db_table和db_column自定义数据表名和字段名

假如你的数据库里已经有了一张数据表,且该表包含多个字段,你希望通过Django直接访问该数据表的各个字段而不是重新建立新表,你这时可以通过db_table指定数据表名,还可以通过db_column指定希望访问的字段名。

在我们创建一个模型时,Django的ORM会根据应用名(app name), 模型名(model name)和字段名(field name)自动在数据库中创建数据表。比如我们有一个Blog的应用,里面有Article模型, 其中Article模型有title这个字段,那么Django默认会创建一个名为blog_article的数据表,其中有title这个字段。假如我们希望把表名改为article,标题改为article_title,以便与已经存在的数据表或字段建立映射关系,我们可以按如下代码操作。

class Article(models.Model):
    """文章模型"""
   
    # 通过db_column自定义数据表中字段名
   title = models.CharField('标题', max_length=200, db_column='article_title')
    slug = models.SlugField('slug', max_length=60, blank=True)
    
    def __str__(self):
        return self.title
        
    class Meta:
        db_table = 'article' # 通过db_table自定义数据表名

通过db_index和Meta index选项给数据表字段建立索引

使用索引可快速访问数据库表中的特定信息。数据库索引好比是一本书前面的目录,没有索引目录的话,你访问书中某个页面需要从第1页遍历到最后一页,如果有目录,你可以快速地根据目录查找到所需要的页面。Django项目中如果你需要频繁地对数据表中的某些字段(如title)使用filter(), exclude()和order_by()方法进行查询,我们强烈建议你对这些字段建议索引(index), 提升查询效率。

要对模型中的某个字段建立数据库索引,你可以使用db_index选项,也可以使用Meta选项建立索引。使用Meta选项的好处是你可以一次性对多个字段建立索引,还可以对多个字段建立组合索引。

方法一: 使用db_index选项

class Article(models.Model):    
	"""文章模型"""    
	# 使用db_index=True对title建立索引    
	title = models.CharField('标题', max_length=200, db_index=True)

方法二: 使用Meta选项

class Article(models.Model):    
	"""文章模型"""   
	title = models.CharField('标题', max_length=200,)    

	class Meta:        
		indexes = [models.Index(fields=['title']),]

你可能感兴趣的:(Django)