我有这样的两个模型:
class Company(models.Model):
raising = models.DecimalField()
class Investment(models.Model):
company = models.ForeignKey(Company)
amount = models.DecimalField()
现在我想找到累积投资少的所有公司<{1}}
如果我向名为raising
的公司添加动态属性以汇总投资金额,我可以这样做:
raised_so_far
但是过滤发生在SQL级别,所以这是不可能的。
到目前为止,这是我最好的尝试:
Company.objects.filter(raised_so_far__lt=F('raising'))
如何使用父对象过滤外键的聚合?
答案 0 :(得分:1)
您只需要使用总投资(通过连接处理)注释查询集,然后使用F
对象进行查询以使用带注释的值,如字段。
Company.objects.annotate(total_investments=models.Sum('investments__amount')).filter(raising__gt=models.F('total_investments'))
而且,你正在加薪。