如何在Django ORM中对过滤数据创建注释?

如何在Django ORM中对过滤数据创建注释?,django,django-orm,django-aggregation,Django,Django Orm,Django Aggregation,我有以下型号: class ApiUser(models.Model): apikey = models.CharField(max_length=32, unique=True) class ExtMethodCall(models.Model): apiuser = models.ForeignKey(ApiUser) method = models.CharField(max_length=100) #method name units = mod

我有以下型号:

class ApiUser(models.Model):
    apikey = models.CharField(max_length=32, unique=True)


class ExtMethodCall(models.Model):
    apiuser = models.ForeignKey(ApiUser)
    method  = models.CharField(max_length=100) #method name
    units   = models.PositiveIntegerField()    #how many units method call cost
    created_dt = models.DateField(auto_now_add=True)
对于报告,我需要获取今天拨打任何电话的所有用户以及每个用户所有电话的总成本

在SQL中,这类似于:

SELECT apiuser.*, q1.total_cost
FROM apiuser INNER JOIN (
    SELECT apiuser_id, sum(units) as total_cost
    FROM extmethodcall
    WHERE create_dt = curdate()
    GROUP by apiuser_id
) USING apiuser_id
到目前为止,我找到了以下解决方案:

models.ExtMethodCall.objects.filter(created_dt=datetime.date.today()).values('apiuser').annotate(Sum('units'))
它返回我的用户id和单位总和


还有其他更聪明的解决方案吗?

你给出的解决方案有什么问题吗?我不太清楚。事实上我用谷歌搜索了一下。