Py学习  »  Django

如何在Django中内部联接4个表?

Manjuanth V M • 5 年前 • 1558 次点击  

我们希望一次检索所有表记录如何在django orm中实现类似sql的quries 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)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53889
文章 [ 1 ]  |  最新文章 5 年前
Charnel
Reply   •   1 楼
Charnel    5 年前

你可以用 prefetch_related 对此,如评论中所述:

Manufacturer.objects.all().prefetch_related('related_name2', 'related_name3', 'related_name4')

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