[英]How to inner join 4 tables in Django?
我们想一次检索所有表记录如何在 django orm 中实现类似 SQL 查询。
示例 SQL 查询:
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
代码:
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)
您可以为此使用prefetch_related ,如评论中所述:
Manufacturer.objects.all().prefetch_related('related_name2', 'related_name3', 'related_name4')
事实上,这不会执行 SQL INNER JOIN,但会在 Python 级别连接预取对象 - 这将减少使用相关对象字段时对 DB 的命中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.