我有4个模型
class SingleDonation(models.Model):
name = models.CharField(
max_length=255,
)
email = models.EmailField()
transaction = models.OneToOneField(Transaction)
class RecurringDonation(models.Model):
name = models.CharField(
max_length=255,
)
email = models.EmailField()
subscription = models.OneToOneField(Subscription)
class Subscription(models.Model):
raw_amount = models.PositiveIntegerField()
interval = models.CharField(
max_length=10,
)
class Transaction(models.Model):
raw_amount = models.PositiveIntegerField()
subscription = models.ForeignKey(
to=Subscription,
on_delete=models.SET_NULL,
null=True, blank=True
)
我试图用电子邮件捐赠的总金额注释两个捐赠查询集
要获得正确的API数量(比如说SingleDonation),我是通过序列化器来完成的
def get_transaction_sum_for_email(self, obj):
single_donation_sum = SingleDonation.objects.filter(email=obj.email).aggregate(Sum('transaction__raw_amount')).get('transaction__raw_amount__sum')
recuring_donation_sum = RecurringDonation.objects.filter(email=obj.email).annotate(transaction_sum=Sum('subscription__transaction__raw_amount')).aggregate(Sum('transaction_sum')).get('transaction_sum__sum') or 0
return single_donation_sum + recuring_donation_sum
但是我想要order_by()这个数量,所以我必须用这个数字注释我的queryset,这就是我遇到的问题。我该怎么办?