我有类似以下的查询:Django SUM查询?
SELECT SUM(ISNULL(table.name)) FROM table
那如何SUM
转化为Django的一个QuerySet? (即它翻译一下操作xyz
到,在像MyModel.objects.xyz()
?)
我有类似以下的查询:Django SUM查询?
SELECT SUM(ISNULL(table.name)) FROM table
那如何SUM
转化为Django的一个QuerySet? (即它翻译一下操作xyz
到,在像MyModel.objects.xyz()
?)
更新:下面结合原始查询的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
啊谢谢。但是'ISNULL'呢? – Mehrdad
我认为你可以在查询中使用过滤器。我没有测试过,但是像这样的东西应该工作:'ModelName.objects.filter(field_name__isnull = True).aggregate(Sum('field_name'))' –
肯定的东西:)我添加更新到我的答案。 –
如果你有一个先进的用例,你可能需要康迪特离子表达式https://docs.djangoproject.com/en/1.11/ref/models/conditional-expressions/#conditional-aggregation – Pykler