diff --git a/cookbook/serializer.py b/cookbook/serializer.py index c1dd0db0..aefa4a83 100644 --- a/cookbook/serializer.py +++ b/cookbook/serializer.py @@ -56,8 +56,7 @@ class ExtendedRecipeMixin(serializers.ModelSerializer): api_serializer = None # extended values are computationally expensive and not needed in normal circumstances try: - if str2bool( - self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer: + if str2bool(self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer: return fields except (AttributeError, KeyError): pass diff --git a/cookbook/views/api.py b/cookbook/views/api.py index 738abeae..a1f66b3d 100644 --- a/cookbook/views/api.py +++ b/cookbook/views/api.py @@ -153,8 +153,7 @@ class ExtendedRecipeMixin(): # add a recipe count annotation to the query # explanation on construction https://stackoverflow.com/a/43771738/15762829 - recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values( - recipe_filter).annotate(count=Count('pk')).values('count') + recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(recipe_filter).annotate(count=Count('pk', distinct=True)).values('count') queryset = queryset.annotate(recipe_count=Coalesce(Subquery(recipe_count), 0)) # add a recipe image annotation to the query @@ -323,8 +322,7 @@ class TreeMixin(MergeMixin, FuzzyFilterMixin, ExtendedRecipeMixin): except self.model.DoesNotExist: self.queryset = self.model.objects.none() else: - return self.annotate_recipe(queryset=super().get_queryset(), request=self.request, - serializer=self.serializer_class, tree=True) + return self.annotate_recipe(queryset=super().get_queryset(), request=self.request, serializer=self.serializer_class, tree=True) self.queryset = self.queryset.filter(space=self.request.space).order_by(Lower('name').asc()) return self.annotate_recipe(queryset=self.queryset, request=self.request, serializer=self.serializer_class,