From 3acc80e2ad44a87228a4d5608db8c5e11b427ee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Sat, 24 May 2025 14:44:42 +0200 Subject: [PATCH] Fix another counting issue --- ram/portal/views.py | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/ram/portal/views.py b/ram/portal/views.py index 4685f5a..dd7d3d4 100644 --- a/ram/portal/views.py +++ b/ram/portal/views.py @@ -491,10 +491,37 @@ class Manufacturers(GetData): def get_data(self, request): return ( - Manufacturer.objects.filter(self.filter) - .annotate( - num_items=Count("rollingstock") + Count("rollingclass"), + Manufacturer.objects.filter(self.filter).annotate( + num_rollingstock=( + Count( + "rollingstock", + filter=Q( + rollingstock__in=( + RollingStock.objects.get_published( + request.user + ) + ) + ), + distinct=True, + ) + ) ) + .annotate( + num_rollingclass=( + Count( + "rollingclass__rolling_class", + filter=Q( + rollingclass__rolling_class__in=( + RollingStock.objects.get_published( + request.user + ) + ), + ), + distinct=True, + ) + ) + ) + .annotate(num_items=F("num_rollingstock") + F("num_rollingclass")) .order_by("name") )