customerwebsitebackend/orders/serializers.py
vickytechkey 0ef971cec4
All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 31s
initial commit
2026-08-14 18:58:18 +05:30

42 lines
1.7 KiB
Python

from rest_framework import serializers
from .models import Cart, CartItem, Order, OrderItem
from products.serializers import ProductSerializer
class CartItemSerializer(serializers.ModelSerializer):
product = ProductSerializer(read_only=True)
product_id = serializers.IntegerField(write_only=True)
subtotal = serializers.SerializerMethodField()
class Meta:
model = CartItem
fields = ['id', 'product', 'product_id', 'quantity', 'price_at_add', 'subtotal']
def get_subtotal(self, obj):
return obj.quantity * obj.price_at_add
class CartSerializer(serializers.ModelSerializer):
items = CartItemSerializer(many=True, read_only=True)
total_price = serializers.SerializerMethodField()
class Meta:
model = Cart
fields = ['id', 'items', 'total_price']
def get_total_price(self, obj):
return sum(item.quantity * item.price_at_add for item in obj.items.all())
class OrderItemSerializer(serializers.ModelSerializer):
product_title = serializers.CharField(source='product.title', read_only=True)
product_image = serializers.CharField(source='product.image_url', read_only=True)
class Meta:
model = OrderItem
fields = ['id', 'product', 'product_title', 'product_image', 'quantity', 'unit_price', 'tracking_number', 'carrier']
class OrderSerializer(serializers.ModelSerializer):
items = OrderItemSerializer(many=True, read_only=True)
username = serializers.CharField(source='user.username', read_only=True)
class Meta:
model = Order
fields = ['id', 'username', 'razorpay_order_id', 'razorpay_payment_id', 'total_amount', 'status', 'shipping_address', 'placed_at', 'items']