From 93a005bfd4031805b02993cd10d0f260521203c8 Mon Sep 17 00:00:00 2001 From: muhammadvadud Date: Wed, 26 Nov 2025 11:23:08 +0500 Subject: [PATCH] Home api lari o'zgartirish kiritildi --- core/apps/api/serializers/ad/home_api.py | 25 +++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/core/apps/api/serializers/ad/home_api.py b/core/apps/api/serializers/ad/home_api.py index 67f7ba3..d385901 100644 --- a/core/apps/api/serializers/ad/home_api.py +++ b/core/apps/api/serializers/ad/home_api.py @@ -16,9 +16,10 @@ class AdVariantSerializer(serializers.ModelSerializer): class BaseHomeAdSerializer(serializers.ModelSerializer): - variants = serializers.SerializerMethodField() star = serializers.SerializerMethodField() comment_count = serializers.SerializerMethodField() + original_price = serializers.SerializerMethodField() + discount = serializers.SerializerMethodField() class Meta: model = AdModel @@ -29,14 +30,24 @@ class BaseHomeAdSerializer(serializers.ModelSerializer): "image", "star", "comment_count", - "variants", + "original_price", + "discount", ] - def get_variants(self, obj): - variant = obj.variants.order_by("price").first() - if variant: - return AdVariantSerializer(variant).data - return [] + def _get_first_variant(self, obj): + if not hasattr(self, "_variant_cache"): + self._variant_cache = {} + if obj.id not in self._variant_cache: + self._variant_cache[obj.id] = obj.variants.order_by("price").first() + return self._variant_cache[obj.id] + + def get_original_price(self, obj): + variant = self._get_first_variant(obj) + return variant.price if variant else 0 + + def get_discount(self, obj): + variant = self._get_first_variant(obj) + return variant.discount if variant else 0 def get_star(self, obj): avg = obj.feedback.aggregate(avg=Avg("star"))["avg"]