这个select_related在Django中是如何工作的



我在Django文档中看到了这个关于如何使用select_related()的例子:

from django.db import models
class City(models.Model):
    # ...
    pass
class Person(models.Model):
    # ...
    hometown = models.ForeignKey(City)
class Book(models.Model):
    # ...
    author = models.ForeignKey(Person)

调用Book.objects.select_related('person', 'person__city').get(id=4)将缓存相关的PersonCity

我不明白这里制作的确切query。我知道query result是预先填充的。但query(英语或sql术语)在这里是什么

正如您提到的,它预先填充了querySet。也就是说,当检索记录时,它只访问database一次。如果您没有select_related,您将单独对Book,Person and City进行database调用,将呼叫数量从1增加到3。

要显示它将执行的确切查询,请在shell中使用以下命令:

print Book.objects.select_related('person', 'person__city').get(id=4).query

相关内容

  • 没有找到相关文章

最新更新