2017-05-06 53 views
1

我想要遍历一对多关系以有效地从父表中选择所有记录,假设子表中存在某些内容。从父表中选择所有记录假设子项中存在的东西

从models.py

class Meter(models.Model): 
    deal = models.ForeignKey(Deal, on_delete=models.CASCADE) 
    company = models.IntegerField() 

class Deal(models.Model): 
    dealinfo = models.IntegerField() 

英语,选择所有具有公司#米交易的2

在SQL

select * from Deal 
where Deal.id in 
(
select distinct Deal_id 
from Meter 
where Meter.company = 2 
); 

我不知道如何没有两个查询来做到这一点。我甚至想不出一种解决方案的好方法。

我尝试这样做: 结果= Deal.objects.filter(meter__company = 2) ,我发现在这里: How do you access parent and children relationships through the ORM with a conditional on the parent where record child exist?但它是一个内部联接,并没有实现“唯一”这句话,所以我得到的多条记录。

回答

2

我想你在找什么可以使用distinct()

result = Deal.objects.filter(meter__company=2).distinct() 
+0

感谢迎刃而解!令人惊讶的简洁明了。我感谢您的帮助。 – Jonathan

相关问题