Django SUMME Abfrage?

73

Ich habe eine Abfrage ähnlich der folgenden:

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

Wie SUMübersetzt sich das in ein QuerySetin Django? dh in welche Operation xyzwird es in so etwas übersetzt MyModel.objects.xyz()?

user541686
quelle
Wenn Sie einen fortgeschrittenen Anwendungsfall haben, benötigen Sie möglicherweise bedingte Ausdrücke docs.djangoproject.com/de/1.11/ref/models/…
Pykler

Antworten:

146

Update: Im Folgenden wird der ISNULL-Aspekt der ursprünglichen Abfrage berücksichtigt:

from django.db.models import Sum

ModelName.objects.filter(field_name__isnull=True).aggregate(Sum('field_name'))
# returns {'field_name__sum': 1000} for example

Sie suchen nach der Summenaggregationsfunktion, die wie folgt funktioniert:

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

Siehe: https://docs.djangoproject.com/de/dev/ref/models/querysets/#sum

rollender Stein
quelle
1
Ich denke, Sie können dies mit Filter in Ihrer Abfrage tun. Ich habe es nicht getestet, aber so etwas sollte funktionieren:ModelName.objects.filter(field_name__isnull=True).aggregate(Sum('field_name'))
Rolling Stone