自
django-2.0
,可以在
Count
,但这对我们没有帮助。
可以
总和
向上
workers__is_deleted
,或其否定。例如,如果要返回
删除:
from django.db.models import F, IntegerField, Sum, Value
from django.db.models.functions import Coalesce
class TicketCounterList(ListAPIView):
queryset = TicketCounter.objects.filter(
ticket_counter_is_deleted=False
).annotate(
num_workers=Cast(
Coalesce(Sum(Value(1) - F('workers__is_deleted')), Value(0)),
IntegerField()
)
)
serializer_class = TicketCounterSerializer
或者如果要计算已删除的工作进程:
from django.db.models import F, IntegerField, Sum, Value
from django.db.models.functions import Coalesce
class TicketCounterList(ListAPIView):
queryset = TicketCounter.objects.filter(
ticket_counter_is_deleted=False
).annotate(
num_workers=Cast(
Coalesce(Sum(F('workers__is_deleted')), Value(0)),
IntegerField()
)
)
serializer_class = TicketCounterSerializer