unit category added

This commit is contained in:
Parsa Nazer
2025-12-04 13:37:55 +03:30
parent fd6aad8be5
commit 68368fc531
8 changed files with 161 additions and 3 deletions
+42
View File
@@ -65,6 +65,48 @@ class AllCategories(APIView):
categories_ser = self.serializer_class(
instance=categories, many=True, context={'request': request})
return Response(categories_ser.data, status=status.HTTP_200_OK)
class UnitCategorySerializerV2(serializers.ModelSerializer):
maincategorys = serializers.SerializerMethodField()
class Meta:
model = UnitCategoryModel
fields = ['id', 'name', 'slug', 'icon', 'meta_title',
'meta_description', 'image', 'maincategorys']
def get_maincategorys(self, obj):
main_categories = obj.maincategorys.all()
return MainCategorySerializer(main_categories, many=True, context=self.context).data
class AllCategoriesV2(APIView):
serializer_class = UnitCategorySerializerV2
authentication_classes = []
@extend_schema(
responses={
200: UnitCategorySerializerV2(many=True),
404: OpenApiTypes.OBJECT,
},
)
def get(self, request):
# Optimize query with prefetch_related to avoid N+1 queries
unit_categories = UnitCategoryModel.objects.prefetch_related(
Prefetch(
'maincategorys',
queryset=MainCategoryModel.objects.prefetch_related(
Prefetch(
'subcategorys',
queryset=SubCategoryModel.objects.annotate(
product_count=Count('products')
)
)
)
)
).all()
categories_ser = self.serializer_class(
instance=unit_categories, many=True, context={'request': request})
return Response(categories_ser.data, status=status.HTTP_200_OK)
class ProductView(APIView):