django - django 有效地从 3 个模型中获取数据
问题描述
我是 django 的新手,所以请多多包涵。
我有以下关系。如果我有模型 A 的主键,如何在最有效的查询中获取 A、B 和 C 的所有数据?
注意:A -> C 是一对多的关系,而B -> C 是多对一的关系(即每个C 只有1 个B,但多个C 可能有相同的B)。
我正在考虑某种形式,prefetch_related
但据我了解,这意味着我正在进行 3 次分贝调用?
另外,在某个地方我可以看到 Django 运行的 SQL 查询吗?我正在使用 mysql 作为数据库。
Class A(models.Model):
pass
Class B(models.Model):
pass
Class C(models.Model):
a = models.ForeignKey(A)
b = models.ForeignKey(B)
解决方案
您可以select_related
改用:
C.objects.filter(<your filter if any>).select_related('a', 'b')
这将从数据库中检索相关字段的所有数据,a
并且b
在单个查询中。你可以看到prefetch_related
这里的区别。
关于你的第二个问题
在某个地方我可以看到 Django 运行的 SQL 查询吗?
是的,您可以在面板 SQL 中使用django-debug-toolbar看到它们。
推荐阅读
- python - 使用 read_excel 读取选定的数据
- deployment - 使用pm2创建react app部署到digitalocean问题
- php - 为什么 PHP 在计算没有指定时区的时间戳时会在某些日期分配不同的时区?
- jenkins - Jenkins 管道:从上游作业访问单个阶段结果
- python - 修改 pandas 数据框列中的字符串
- acumos - Acumos“站点管理员”更改带来意想不到的副作用
- docker - IntelliJ 无法连接到受保护的 tcp Docker 套接字
- php - Symfony bundle 配置数组节点默认值合并
- vmware - 如何在 vmware 机器上获取远程访问权限
- mysql - 使用两个表进行数据操作