2011-06-26 114 views
41

我有类似以下的查询:Django SUM查询?

SELECT SUM(ISNULL(table.name)) FROM table 

那如何SUM转化为Django的一个QuerySet? (即它翻译一下操作xyz到,在像MyModel.objects.xyz()?)

+0

如果你有一个先进的用例,你可能需要康迪特离子表达式https://docs.djangoproject.com/en/1.11/ref/models/conditional-expressions/#conditional-aggregation – Pykler

回答

86

更新:下面结合原始查询的ISNULL方面:

from django.db.models import Sum 

ModelName.objects.filter(field_name__isnull=True).aggregate(Sum('field_name')) 

您正在寻找的总和聚合功能,其工作原理如下:

ModelName.objects.aggregate(Sum('field_name')) 

参见:https://docs.djangoproject.com/en/dev/ref/models/querysets/#sum

+0

啊谢谢。但是'ISNULL'呢? – Mehrdad

+0

我认为你可以在查询中使用过滤器。我没有测试过,但是像这样的东西应该工作:'ModelName.objects.filter(field_name__isnull = True).aggregate(Sum('field_name'))' –

+1

肯定的东西:)我添加更新到我的答案。 –