Django:在一个查询中对两个不同数据集上的字段进行聚合(求和)

Django:在一个查询中对两个不同数据集上的字段进行聚合(求和),django,postgresql,django-models,orm,django-queryset,Django,Postgresql,Django Models,Orm,Django Queryset,我正在使用Django 1.6。 我的模型看起来像: Class Transaction(models.Model): type = models.CharField(max_length=255, db_index=True) amount = models.DecimalField(decimal_places=2, max_digits=10, default=0.00) Transaction.objects.aggregate(credit=Sum('amount',

我正在使用Django 1.6。 我的模型看起来像:

Class Transaction(models.Model):
    type = models.CharField(max_length=255, db_index=True)
    amount = models.DecimalField(decimal_places=2, max_digits=10, default=0.00)
Transaction.objects.aggregate(credit=Sum('amount', filter=Q(type='C')), debit=Sum('amount', filter=Q(type='D')))
我有几笔交易,其中很少是贷方交易,其他的是借方交易(由类型列决定)。我需要检查所有交易的余额,即(借方-贷方)

目前,我可以使用以下两个查询来实现这一点:

debit_amount=Transaction.objects.fitler(type='D').aggregate(debit_amount=Sum('amount'))['debit_amount']
credit_amount=Transaction.objects.fitler(type='C').aggregate(credit_amount=Sum('amount'))['credit_amount']
balance = debit_amount - credit_amount
我看起来像:

Class Transaction(models.Model):
    type = models.CharField(max_length=255, db_index=True)
    amount = models.DecimalField(decimal_places=2, max_digits=10, default=0.00)
Transaction.objects.aggregate(credit=Sum('amount', filter=Q(type='C')), debit=Sum('amount', filter=Q(type='D')))
你可以用


这在django 2.0()中应该是可能的