python - 用于具有多个左连接的 SQL 查询的 Django ORM
问题描述
我有一个 SQL 查询,我试图将其作为 Django ORM,尝试了很多方法,但没有得到确切的解决方案。
select c.* from product p
left join voucher v on v.id = p.voucher_id
left join customer c on c.id = v.customer_id
where p.id=3;
Django 模型是,
class Customer(models.Model):
customer_name = models.CharField(max_length=200, default="", db_index=True)
mobile = models.IntegerField(default='')
class Voucher(models.Model):
voucher_name = models.CharField(max_length=100, default='')
customer = models.ForeignKey(Customer,db_index=True)
class Product(models.Model):
product_name = models.CharField(max_length=100, default='')
rate = models.FloatField(max_length=50)
voucher = models.ForeignKey(Voucher, db_index=True)
解决方案
需要使用select_related
甲骨文:Product.objects.filter(id=3).select_related('voucher__customer')
select_related
通过创建 SQL 连接文档来工作
推荐阅读
- spring-boot - thenThrow() 不抛出异常
- macos - 从 rtf 文件在终端中运行文本行
- php - 有没有办法在 dompdf 中添加边距或缩放?
- git - 通过 OneDrive 在 2 台不同的计算机上使用 Git
- android - Android多文件下载同时更新ui
- excel - 无法从 .range.value 中获取价值
- java - 基于postgres查询的Spring数据jpa规范
- javascript - react JS中的分页
- python - 如何仅从给定的起点将文本文件中的数据附加到列表中,而不是使用 python 附加完整文件
- google-chrome - 使用 Chrome 扩展来调整未停靠的开发工具窗口的大小