Model2 есть fk на Model1 и какой то аттрибут attr2
Как можно с помощью annotate вывести количество обьектов Model1, у которых существует связь с обьектами Model2 и у этих обьектов attr2 не None?
Делаю так:
Model1.objects.values(‘attr1’).annotate(total=Count(Case(When(model2__attr2__isnull=False), then=1)).order_by(‘total’)
Получаю количество обьектов Model2, для которых выполняется условие вместо кол-ва обьектов Model1
ап в надежде на ответ
сделай фильтер потом подсчитай скок получилось, типо такого Model1.objects.filter(model2__attr2__isnull=False).values(‘attr1’).annotate(total=Count('attr1')).order_by(‘total’) Model1.objects.filter(model2__attr2__isnull=False).annotate(total=Count('attr1')).values(‘attr1’, 'total').order_by(‘total’)
Фильтровать надо именно внутри annotate, я хочу вернуть общее кол-во, кол-во обьектов с related objects с атрибутом None и кол-во обьектов c related objects с атрибутом не None. Я понимаю, что это все можно достать разными запросами в бд, но хочется получить один кверисет со всеми данными за один раз Сори, что не уточнил сразу
Обсуждают сегодня