首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django高效地从3个模型获取数据

django高效地从3个模型获取数据
EN

Stack Overflow用户
提问于 2018-07-06 00:03:40
回答 1查看 27关注 0票数 0

我是新来姜戈的,所以请耐心听我说。

我有下面的关系。如果我有模型A的主键,我如何在最有效的查询中获得来自A、B和C的所有数据?

注:A -> C是1对多关系,而B -> C是多对1关系(即每个C只有1个B,但多个C可能有相同的B)。

我在考虑某种形式的prefetch_related,但据我所知,这意味着我正在进行3db调用?

另外,有没有什么地方可以看到Django运行的SQL查询?我使用mysql作为数据库。

代码语言:javascript
复制
Class A(models.Model):
    pass

Class B(models.Model):
    pass

Class C(models.Model):
    a = models.ForeignKey(A)
    b = models.ForeignKey(B)
EN

回答 1

Stack Overflow用户

发布于 2018-07-06 00:28:55

您可以改用select_related

代码语言:javascript
复制
C.objects.filter(<your filter if any>).select_related('a', 'b')

这将在单个查询中检索数据库中相关字段ab的所有数据。您可以看到与prefetch_related here的区别。

关于你的第二个问题

有没有什么地方可以看到

运行的SQL查询?

是的,您可以在SQL面板中使用django-debug-toolbar查看它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51195738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档