我想知道prefetch_related()和select_related()的行为。 如果我做了类似Model.objects.filter(...)。prefetch_related()的事情,我注意到发生的数据库查询要少得多。所以我最初的猜测是,如果没有在prefetch_related()中指定所需的查找,它将自动遍历所有模型字段并执行所需的工作。但是,我在网上找不到任何引用,这对我来说似乎很奇怪。我的猜测是正确还是我错过了什么?
答案 0 :(得分:1)
来自the FineManual(tm)(重点是我的):
在某些情况下,您可能希望调用select_related() 有很多相关的对象,或者你不知道所有的相关对象 关系。 在这些情况下,可以使用调用select_related() 没有参数。这将遵循它可以找到的所有非null外键 - 必须指定可以为空的外键。不建议这样做 大多数情况下,因为它可能使基础查询更复杂, 并返回比实际需要更多的数据。