Так что является наиболее оптимизированным способом запроса count с помощью фильтра, который содержит многие условия? Также иногда нам нужно считать одну и ту же модель, но используя различный фильтр < /p>
Вот пример кода в Django (проверьте данные подсчета для каждой школы). < /P>
Код: Выделить всё
# In this code, each model already implements softdelete manager query.
School.objects.annotate(
number_of_class=Count(
"class", filter=Q(class__is_deleted=False, class__create_time__lte=datetime, ...more filter), distinct=True
),
number_of_student=Count(
"student", filter=Q(student__is_deleted=False, student__create_time__lte=datetime, ...more filter), distinct=True
),
number_of_public_book=Count(
"book", filter=Q(book__is_deleted=False, book__create_time__lte=datetime, book__create_time__gte=datetime, book__type=1, ...more filter), distinct=True
),
number_of_private_book=Count(
"book", filter=Q(book__is_deleted=False, book__create_time__lte=datetime, book__create_time__gte=datetime, book__type__in=[2,3], ...more filter), distinct=True
)
more_count...
)
Подробнее здесь: https://stackoverflow.com/questions/781 ... -many-filt