order update viewset change qilindi

This commit is contained in:
behruz-dev
2025-12-02 16:22:26 +05:00
parent d82c1ed5b5
commit 8b56f9e65b
3 changed files with 27 additions and 12 deletions

View File

@@ -7,7 +7,7 @@ from rest_framework import serializers
# orders # orders
from core.apps.orders.models import Order, OrderItem from core.apps.orders.models import Order, OrderItem
from core.apps.orders.serializers.order_item import OrderItemSerializer from core.apps.orders.serializers.order_item import OrderItemSerializer, OrderUpdateItemSerializer
# shared # shared
from core.apps.shared.models import Factory from core.apps.shared.models import Factory
# accounts # accounts
@@ -104,7 +104,7 @@ class AdminOrderUpdateSerializer(serializers.Serializer):
advance = serializers.FloatField() advance = serializers.FloatField()
employee_name = serializers.CharField() employee_name = serializers.CharField()
user_id = serializers.IntegerField() user_id = serializers.IntegerField()
items = OrderItemSerializer(many=True) items = OrderUpdateItemSerializer(many=True)
def validate(self, data): def validate(self, data):
user = User.objects.filter(id=data['user_id']).first() user = User.objects.filter(id=data['user_id']).first()

View File

@@ -22,12 +22,13 @@ class OrderViewSet(viewsets.GenericViewSet, ResponseMixin):
queryset = Order.objects.all() queryset = Order.objects.all()
def get_serializer_class(self): def get_serializer_class(self):
if self.action == "post": match self.action:
return serializers.AdminOrderCreateSerializer case "post":
elif self.action in ("patch", "put"): return serializers.AdminOrderCreateSerializer
return serializers.AdminOrderUpdateSerializer case "update_":
else: return serializers.AdminOrderUpdateSerializer
return serializers.AdminOrderListSerializer case _:
return serializers.AdminOrderListSerializer
@swagger_auto_schema( @swagger_auto_schema(
tags=['Admin Orders'], tags=['Admin Orders'],
@@ -82,7 +83,7 @@ class OrderViewSet(viewsets.GenericViewSet, ResponseMixin):
tags=['Admin Orders'] tags=['Admin Orders']
) )
@action(detail=True, methods=['patch'], url_path='update') @action(detail=True, methods=['patch'], url_path='update')
def update_doctor(self, request, pk=None): def update_(self, request, pk=None):
try: try:
order = Order.objects.filter(id=pk).first() order = Order.objects.filter(id=pk).first()
if not order: if not order:

View File

@@ -5,8 +5,7 @@ from django.db import transaction
from rest_framework import serializers from rest_framework import serializers
# orders # orders
from core.apps.orders.models import OrderItem from core.apps.orders.models import OrderItem, Product
class OrderItemSerializer(serializers.ModelSerializer): class OrderItemSerializer(serializers.ModelSerializer):
@@ -15,3 +14,18 @@ class OrderItemSerializer(serializers.ModelSerializer):
fields = [ fields = [
'id', 'product', 'quantity', 'total_price' 'id', 'product', 'quantity', 'total_price'
] ]
class OrderUpdateItemSerializer(serializers.Serializer):
product_id = serializers.IntegerField()
quantity = serializers.IntegerField()
total_price = serializers.DecimalField(max_digits=15, decimal_places=2)
def validate(self, attrs):
product = Product.objects.filter(id=attrs['product_id']).first()
if not product:
raise serializers.ValidationError({"product": "Product not found"})
attrs['product'] = product
return attrs