2011-06-26 7 views
41

私は次のように似たクエリを持っている:Django SUMクエリ?

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

はどのようSUMはジャンゴでクエリセットにつながるということですか? (?すなわち、それはMyModel.objects.xyz()のようなもので、に変換何の操作xyz

+0

をあなたは、高度なユースケースを持っている場合は、コンディットが必要になる場合がありますイオンの式https://docs.djangoproject.com/ja/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

確かに:)私は私の答えに更新を追加しました。 –