From a1cc0cfd305eeaa3ef0923f8b9fb7a74a86e21f3 Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Fri, 27 Feb 2026 18:05:27 +0300 Subject: [PATCH] feat(category): add min_price and max_price to serializer enable retrieval of min and max product prices for categories to support price range filters. fixed a typo in queryset filter for brands. --- engine/core/models.py | 4 ++-- engine/core/serializers/detail.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/engine/core/models.py b/engine/core/models.py index 0add9262..690f7014 100644 --- a/engine/core/models.py +++ b/engine/core/models.py @@ -456,8 +456,8 @@ class Category(NiceModel, MPTTModel): @cached_property def brands(self) -> QuerySet["Brand"]: return Brand.objects.filter( - products__category=self, - products__is_active=True, + product__category=self, + product__is_active=True, is_active=True, ).distinct() diff --git a/engine/core/serializers/detail.py b/engine/core/serializers/detail.py index 535704ac..14c97487 100644 --- a/engine/core/serializers/detail.py +++ b/engine/core/serializers/detail.py @@ -62,6 +62,8 @@ class CategoryDetailSerializer(ModelSerializer): children = SerializerMethodField() filterable_attributes = SerializerMethodField() brands = BrandSimpleSerializer(many=True, read_only=True) + min_price = SerializerMethodField() + max_price = SerializerMethodField() class Meta: model = Category @@ -98,6 +100,12 @@ class CategoryDetailSerializer(ModelSerializer): return list(serializer.data) return [] + def get_min_price(self, obj: Category): + return obj.min_price + + def get_max_price(self, obj: Category): + return obj.max_price + class BrandDetailSerializer(ModelSerializer): categories = CategorySimpleSerializer(many=True)