Аннотированное значение дает Нет, нужно 0

order_list_cases =(order_list.values('user_id').annotate(dcount=Count('user_id'),customer_paid_sum=(Sum('invoice__transaction_invoice__transaction_amount'))

В этом коде customer_paid_sum возвращает None, я хочу выдать 0, если это None. Я пробовал использовать else case, но ничего не получилось.

Вы можете работать с Coalesce [Django-doc] для возврата 0 вместо None, если агрегат работает над пустой коллекцией:

from django.db.models import Value
from django.db.models.functions import Coalesce

order_list_cases = order_list.values('user_id').annotate(
    dcount=Count('user_id'),
    customer_paid_sum=Coalesce(
        Sum('invoice__transaction_invoice__transaction_amount'),
        Value(0)
    )
)
Вернуться на верх