我有两个这样的模型:
class Company(models.Model):
raising = models.DecimalField()
class Investment(models.Model):
company = models.ForeignKey(Company)
amount = models.DecimalField()
现在我想找到所有累计投资少于raising
如果我向 Company 添加一个动态属性,称为raised_so_far
汇总投资金额,我可以执行以下操作:
Company.objects.filter(raised_so_far__lt=F('raising'))
但是过滤发生在 SQL 级别,所以这是不可能的。
到目前为止,这是我最好的尝试:
Company.objects.filter(raising__gt=Investment.objects.filter(company=F(outer_company_object)).aggregate(Sum('amount'))['amount__sum'] or 0)
如何使用父对象过滤外键的聚合?