1

私は次のモデルを持っています:

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'))

apiuser_idmeとを返しますunits__sum

これ以上のインテリジェントなソリューションはありますか?

4

0 に答える 0