disable counter for guide elements

This commit is contained in:
Anatoly 2020-02-04 10:03:21 +03:00
parent 223f5217a2
commit 87686abbb7
3 changed files with 35 additions and 15 deletions

View File

@ -174,7 +174,27 @@ class GuideQuerySet(models.QuerySet):
def with_extended_related(self):
"""Return QuerySet with extended related."""
return self.with_base_related().prefetch_related('guideelement_set')
return (
self.with_base_related()
.prefetch_related(
models.Prefetch(
'guideelement_set',
queryset=GuideElement.objects.select_related(
'guide_element_type',
'establishment',
'review',
'wine_region',
'product',
'city',
'wine_color_section',
'section',
'guide',
'parent',
'label_photo',
)
)
)
)
def by_country_id(self, country_id):
"""Return QuerySet filtered by country id."""
@ -256,10 +276,7 @@ class GuideQuerySet(models.QuerySet):
def annotate_present_objects_counter(self):
"""Return QuerySet with annotated field - present_objects_counter."""
return (
self.annotate_restaurant_counter()
.annotate_shop_counter()
.annotate_wine_counter()
.annotate(
self.annotate(
present_objects_counter=(
models.F('restaurant_counter') +
models.F('shop_counter') +

View File

@ -107,10 +107,10 @@ class GuideBaseSerializer(serializers.ModelSerializer):
guide_filters = GuideFilterBaseSerializer(read_only=True,
source='guidefilter')
# counters
restaurant_counter = serializers.IntegerField(read_only=True)
shop_counter = serializers.IntegerField(read_only=True)
wine_counter = serializers.IntegerField(read_only=True)
present_objects_counter = serializers.IntegerField(read_only=True)
# restaurant_counter = serializers.IntegerField(read_only=True)
# shop_counter = serializers.IntegerField(read_only=True)
# wine_counter = serializers.IntegerField(read_only=True)
# present_objects_counter = serializers.IntegerField(read_only=True)
count_objects_during_init = serializers.IntegerField(read_only=True,
source='count_related_objects')
@ -130,10 +130,10 @@ class GuideBaseSerializer(serializers.ModelSerializer):
'state',
'state_display',
'guide_filters',
'restaurant_counter',
'shop_counter',
'wine_counter',
'present_objects_counter',
# 'restaurant_counter',
# 'shop_counter',
# 'wine_counter',
# 'present_objects_counter',
'count_objects_during_init',
]
extra_kwargs = {

View File

@ -29,8 +29,11 @@ class GuideBaseView(generics.GenericAPIView):
permission_classes = get_permission_classes()
def get_queryset(self):
"""Overridden get_queryset method."""
return models.Guide.objects.with_extended_related().annotate_counters()
"""An overridden get_queryset method."""
return (
models.Guide.objects.with_extended_related()
# .annotate_counters()
)
class GuideFilterBaseView(generics.GenericAPIView):