在提取某个模型的数据的同时,也提前将相关联的数据提取出来。比如提取文章数据,可以使用select_related将author信息提取出来,以后再次使用article.author的时候就不需要再次去访问数据库了。可以减少数据库查询的次数。示例代码如下
article = Article.objects.get(pk=1)
article.author # 重新执行一次查询语句
article = Article.objects.select_related('author').get(pk=2)
article.author # 不需要重新执行查询语句
select_related只能用在多对一或者一对一中,不能用在多对多或一对多。比如可以提前获取文章的作者,但是不能通过作者获取这个作者的文章,或者是通过某篇文章获取这个文章所有的标签。