All checks were successful
Deploy Beta (NATIVE) / deploy (push) Successful in 19s
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
from rest_framework import serializers
|
|
from .models import Cart, CartItem, Order, SellerOrder
|
|
from products.serializers import ProductSerializer
|
|
|
|
class CartItemSerializer(serializers.ModelSerializer):
|
|
product = serializers.SerializerMethodField()
|
|
product_id = serializers.IntegerField()
|
|
subtotal = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = CartItem
|
|
fields = ['id', 'product', 'product_id', 'quantity', 'price_at_add', 'subtotal']
|
|
|
|
def get_product(self, obj):
|
|
prod = obj.product
|
|
if prod:
|
|
return ProductSerializer(prod).data
|
|
return None
|
|
|
|
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 OrderSerializer(serializers.ModelSerializer):
|
|
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']
|