首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Django中内连接4个表?

如何在Django中内连接4个表?
EN

Stack Overflow用户
提问于 2020-01-31 12:17:01
回答 1查看 831关注 0票数 3

我们希望一次检索所有的表记录,如何在django orm中实现类似SQL查询。

SQL查询示例:

代码语言:javascript
运行
AI代码解释
复制
select * 
from Company_info 
inner join Bank_info on Bank_info.manufacturer = Company_info.manufacturer
inner join Company_info on Company_info.manufacturer = Company_info.manufacturer
inner join Transport_info on Transport_info.manufacturer = Company_info.manufacturer

代码:

代码语言:javascript
运行
AI代码解释
复制
class Manufacturer(models.Model):
    name = models.CharField(max_length=42)

class Bank_info(models.Model):
    account = models.CharField(max_length=42)
    manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)

class Company_info(models.Model):
    name= models.CharField(max_length=42)
    manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)

class Transport_info(models.Model):
    name= models.CharField(max_length=42)
    manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-31 12:31:56

您可以使用prefetch_related来实现这一点,如注释中所述:

代码语言:javascript
运行
AI代码解释
复制
Manufacturer.objects.all().prefetch_related('related_name2', 'related_name3', 'related_name4')

事实上,这不会执行SQL内部连接,但会在Python级别连接预取的对象-这将减少使用相关对象字段时对数据库的命中率。

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

https://stackoverflow.com/questions/60003751

复制
相关文章

相似问题

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