1. 我们基于以下模型来分析select_related的作用。
class Person(models.Model);
name = models.CharField(max_length=30)
age = models.IntegerField()
class Book(models.Model):
person = models.ForeignKey(Person)
title = models.CharField(max_length=50)
pubtime = models.DateField()
2. 模型结构为:
Book - title
- page
- person -> ForeignKey(Person)
3. 两种查询方式:
A. 不带select_related
book = Book.objects.filter(pk=1) # 需要查询数据库 1
---------------------
result:
book - id
- title
- page
- Person.id
---------------------
n = book.name # 需要查询数据库 2
a = book.age # 需要查询数据库 3
*总共向数据库发起三次查询。
B. 带select_related
book = Book.objects.select_related().filter(pk=1) # 需要查询数据库