Django 2.0中的条件聚合使你可以进一步减少过去的流量。这也将使用Postgres的filter逻辑,该逻辑比求和的情况要快一些(我见过像20-30%这样的数字被打乱)。
无论如何,就你的情况而言,我们正在研究简单的东西:
from django.db.models import Q, Countevents = Event.objects.annotate( paid_participants=Count('participants', filter=Q(participants__is_paid=True)))在文档中还有一个单独的部分,关于注释过滤。它和条件聚合是一样的东西,但是更像上面的例子。无论哪种方式,这都比我之前做的粗糙子查询要健康得多。



