簡體   English   中英

如何在 Django 中內部連接 ​​4 個表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM