社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

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

我们希望一次检索所有表记录如何在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
 
1409 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Charnel
Reply   •   1 楼
Charnel    5 年前

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

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

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