English 中文(简体)
如何在Django ORM中生成关于过滤数据的说明?
原标题:How to create annotation on filtered data in Django ORM?
  • 时间:2009-10-14 16:57:09
  •  标签:

我有以下模式:

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)

就报告而言,需要让今天发出任何呼吁的所有用户都参与进来,并需要为每个用户提供全部电话。

在座右铭上:

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

页: 1

是否有更明智的解决办法?

问题回答

是否有更明智的解决办法?

这不是最自然的解决办法,Django ORM将“tan”

<代码>annotate(Sum(单位)

页: 1





相关问题
热门标签