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

View File

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

View File

@@ -5,8 +5,7 @@ from django.db import transaction
from rest_framework import serializers
# orders
from core.apps.orders.models import OrderItem
from core.apps.orders.models import OrderItem, Product
class OrderItemSerializer(serializers.ModelSerializer):
@@ -15,3 +14,18 @@ class OrderItemSerializer(serializers.ModelSerializer):
fields = [
'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