Django SQL查询计数

时间:2019-04-21 23:29:57

标签: sql django django-models

我在Django中具有以下模型:

class Author(models.Model):
    name = models.CharField(max_length=120)
    country = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=1024)
    publisher = models.CharField(max_length=255)
    published_date = models.DateField()
    author = models.ForeignKey(Author)

“作者”表中有9条记录,“书”表中有4条记录。

计算Book.objects.select_related()。all()时将发出多少个SQL查询?

我的猜测是4,因为Book表中有4行,因此每行查询1条以搜索与每本书相关的所有作者。为什么我的答案是错误的?

可能的选择是5、4、10和1。

1 个答案:

答案 0 :(得分:0)

select_related(*fields)

返回一个QuerySet,它将“遵循”外键关系,并在执行查询时选择其他相关对象数据。这可以提高性能,从而导致单个更复杂的查询,但意味着以后使用外键关系将不需要数据库查询。