fix recipe counting issue on extended mixin
This commit is contained in:
parent
c72bf57ccb
commit
52909e8117
@ -56,8 +56,7 @@ class ExtendedRecipeMixin(serializers.ModelSerializer):
|
|||||||
api_serializer = None
|
api_serializer = None
|
||||||
# extended values are computationally expensive and not needed in normal circumstances
|
# extended values are computationally expensive and not needed in normal circumstances
|
||||||
try:
|
try:
|
||||||
if str2bool(
|
if str2bool(self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer:
|
||||||
self.context['request'].query_params.get('extended', False)) and self.__class__ == api_serializer:
|
|
||||||
return fields
|
return fields
|
||||||
except (AttributeError, KeyError):
|
except (AttributeError, KeyError):
|
||||||
pass
|
pass
|
||||||
|
@ -153,8 +153,7 @@ class ExtendedRecipeMixin():
|
|||||||
|
|
||||||
# add a recipe count annotation to the query
|
# add a recipe count annotation to the query
|
||||||
# explanation on construction https://stackoverflow.com/a/43771738/15762829
|
# explanation on construction https://stackoverflow.com/a/43771738/15762829
|
||||||
recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(
|
recipe_count = Recipe.objects.filter(**{recipe_filter: OuterRef('id')}, space=space).values(recipe_filter).annotate(count=Count('pk', distinct=True)).values('count')
|
||||||
recipe_filter).annotate(count=Count('pk')).values('count')
|
|
||||||
queryset = queryset.annotate(recipe_count=Coalesce(Subquery(recipe_count), 0))
|
queryset = queryset.annotate(recipe_count=Coalesce(Subquery(recipe_count), 0))
|
||||||
|
|
||||||
# add a recipe image annotation to the query
|
# add a recipe image annotation to the query
|
||||||
@ -323,8 +322,7 @@ class TreeMixin(MergeMixin, FuzzyFilterMixin, ExtendedRecipeMixin):
|
|||||||
except self.model.DoesNotExist:
|
except self.model.DoesNotExist:
|
||||||
self.queryset = self.model.objects.none()
|
self.queryset = self.model.objects.none()
|
||||||
else:
|
else:
|
||||||
return self.annotate_recipe(queryset=super().get_queryset(), request=self.request,
|
return self.annotate_recipe(queryset=super().get_queryset(), request=self.request, serializer=self.serializer_class, tree=True)
|
||||||
serializer=self.serializer_class, tree=True)
|
|
||||||
self.queryset = self.queryset.filter(space=self.request.space).order_by(Lower('name').asc())
|
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,
|
return self.annotate_recipe(queryset=self.queryset, request=self.request, serializer=self.serializer_class,
|
||||||
|
Loading…
Reference in New Issue
Block a user