Zwrócenie 0 a nie null

0

Cześć,
piszę aplikację w Pythonie w Django i zależy mi na tym, żeby poniższa linijka kodu zwracała 0, a nie null w przypadku pustego pola:

sum_category_1 = Expense.objects.filter(group__pk=self.group_pk, category=1).aggregate(sum_cat_1=models.Sum('value'))

Wyczytałem, że zastosowanie Coalesce ma takie działanie, jednak zastosowanie go tak jak poniżej nie daje oczekiwanego rezultatu:

sum_category_1 = Expense.objects.filter(group__pk=self.group_pk, category=1).aggregate(sum_cat_1=models.Sum(Coalesce('value',0)))

Co robię źle? Jak to powinno poprawnie wyglądać, bądź w jaki sposób uzyskać zamierzony efekt?

0

nie wiem jak w pythonie ale jak mam taki problem to stosuje 2 sposoby:

  • rzutowanie na inta/double/cokolwiek powinno skonwertować nulla na 0
  • dać po prostu ifa costam = costma ? costma : 0;
0

W Pythonie nie ma null, jest None.

A nie możesz po prostu napisać funkcji, która oblicza wartość wyrażenia sprawdza if'em czy ta wartość jest równa None. Jeśli tak to return 0, else return value.

@mr_jaro, w Pythonie ten operator wygląda tak: wartosc if not wartosc == None else 0 .

0

No dobra, ale po coś jest to Coalesce i podobno powinno działać tak jak oczekuję - więc co tutaj nie gra?

0

No w dokumentacji Django jako przykład podają tam zero opakowane w Value (importowane jako V), może akurat to podziała: https://docs.djangoproject.com/pl/2.1/ref/models/database-functions/#coalesce

1 użytkowników online, w tym zalogowanych: 0, gości: 1