【发布时间】:2015-09-23 01:55:22
【问题描述】:
在 Django 文档中,
select_related()“遵循”外键关系,在执行查询时选择其他相关对象数据。
prefetch_related()对每个关系进行单独的查找,并在 Python 中“加入”。
“在python中加入”是什么意思?谁能举例说明一下?
我的理解是,对于外键关系,使用select_related;对于 M2M 关系,请使用 prefetch_related。这是正确的吗?
【问题讨论】:
-
在python中执行join意味着不会在数据库中发生join。使用 select_related,您的连接发生在数据库中,您只需要进行一次数据库查询。使用 prefetch_related,您将执行两个查询,然后结果将由 ORM“连接”,因此您仍然可以键入 object.related_set
-
作为脚注,Timmy O'Mahony 还可以使用数据库命中来解释它们的差异:link
标签: python django django-models django-orm