add: add order list api

This commit is contained in:
behruz-dev
2025-08-29 16:49:56 +05:00
parent 4f45b97aaa
commit 368ec932a6
5 changed files with 56 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ from rest_framework import serializers
from core.apps.orders.models import Order, OrderItem
from core.apps.products.models import Product
from core.apps.products.serializers.product import ProductListSerializer
class OrderItemCreateSerializer(serializers.Serializer):
@@ -42,4 +43,23 @@ class OrderCreateSerializer(serializers.Serializer):
order.total_price = total_price
order.save()
return order
class OrderItemListSerializer(serializers.ModelSerializer):
product = ProductListSerializer()
class Meta:
model = OrderItem
fields = [
'id', 'product', 'price', 'quantity'
]
class OrderListSerializer(serializers.ModelSerializer):
items = OrderItemListSerializer(many=True)
class Meta:
model = Order
fields = [
'id', 'total_price', 'items'
]

View File

@@ -4,4 +4,5 @@ from core.apps.orders.views import order as order_views
urlpatterns = [
path('order/create/', order_views.OrderCreateApiView.as_view()),
path('order/list/', order_views.OrderListApiView.as_view()),
]

View File

@@ -25,4 +25,19 @@ class OrderCreateApiView(generics.GenericAPIView):
'error': serializer.errors,
},
status=400
)
)
class OrderListApiView(generics.GenericAPIView):
serializer_class = serializers.OrderListSerializer
queryset = Order.objects.select_related('items', 'items__product')
permission_classes = [permissions.IsAuthenticated]
def get(self, request):
orders = Order.objects.filter(user=request.user)
page = self.paginate_queryset(orders)
if page is not None:
serializer = self.serializer_class(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.serializer_class(orders, many=True)
return Response(serializer.data, status=200)