我有類似以下的查詢: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