add category search

This commit is contained in:
Parsa Nazer
2025-01-14 22:43:34 +03:30
parent 7f0a9eea64
commit 6401ce2a24
+20 -8
View File
@@ -8,8 +8,7 @@ from django.db.models import Q
from django.shortcuts import get_object_or_404
from rest_framework.permissions import IsAuthenticatedOrReadOnly
from utils.pagination import StructurePagination
from drf_spectacular.utils import extend_schema, OpenApiParameter
from drf_spectacular.types import OpenApiTypes
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
from rest_framework.permissions import AllowAny
@@ -26,8 +25,26 @@ from rest_framework.permissions import AllowAny
class AllCategories(APIView):
serializer_class = CategorySerializer
authentication_classes = []
@extend_schema(
parameters=[
OpenApiParameter(
name="search",
description="Search by category name or description.",
required=False,
type=OpenApiTypes.STR,
)
],
responses={
200: CategorySerializer(many=True),
404: OpenApiTypes.OBJECT,
},
)
def get(self, request):
categories = CategoryModel.objects.all()
search_query = request.query_params.get('search', None)
if search_query:
categories = CategoryModel.objects.filter(Q(name__icontains=search_query) | Q(slug__icontains=search_query))
else:
categories = CategoryModel.objects.all()
categories_ser = self.serializer_class(instance=categories, many=True)
return Response({"categories": categories_ser.data}, status=status.HTTP_200_OK)
@@ -40,11 +57,6 @@ class ProductView(APIView):
product_ser = self.serializer_class(instance=product, many=False)
return Response(product_ser.data, status=status.HTTP_200_OK)
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework import status
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
from django.db.models import Q
class AllProductsView(APIView):
serializer_class = ProductSerializer