from rest_framework import serializers from .models import OrderItemModel, OrderModel class OrderItemSerailzier(serializers.ModelSerializer): class Meta: model = OrderItemModel fields = "__all__" read_only_fields = ('order', 'product') class CartSerializer(serializers.ModelSerializer): items = OrderItemSerailzier(many=True) class Meta: model = OrderModel fields = ['address', 'created_at', 'is_paid', 'status', 'discount_code', 'items'] class OrderSerializer(serializers.ModelSerializer): count = serializers.SerializerMethodField() images = serializers.SerializerMethodField() class Meta: model = OrderModel fields = ['address', 'created_at', 'is_paid', 'status', 'discount_code', "images", "count", "id"] def get_count(self, obj): return obj.items.all().count() def get_images(self, obj): image_list = [ self.context.get('request').build_absolute_uri(image.image.url) if (image := item.product.images.all().first()) else None for item in obj.items.all()[:3] ] return filter(lambda x: x is not None, image_list)