from rest_framework import serializers from .models import EquipmentCategory, EquipmentImage, EquipmentItem class EquipmentCategorySerializer(serializers.ModelSerializer): class Meta: model = EquipmentCategory fields = ("id", "name", "slug", "description") class EquipmentImageSerializer(serializers.ModelSerializer): image_url = serializers.SerializerMethodField() class Meta: model = EquipmentImage fields = ("id", "image_url", "alt_text", "sort_order", "is_primary") def get_image_url(self, obj): if not obj.image: return "" request = self.context.get("request") if request: return request.build_absolute_uri(obj.image.url) return obj.image.url class EquipmentItemSerializer(serializers.ModelSerializer): category = EquipmentCategorySerializer(read_only=True) category_id = serializers.PrimaryKeyRelatedField( queryset=EquipmentCategory.objects.all(), source="category", write_only=True, ) vendor_slug = serializers.CharField(source="vendor.slug", read_only=True) vendor_business_name = serializers.CharField(source="vendor.business_name", read_only=True) images = EquipmentImageSerializer(many=True, read_only=True) class Meta: model = EquipmentItem fields = ( "id", "public_id", "title", "description", "details", "location", "price_per_day", "is_active", "category", "category_id", "vendor_slug", "vendor_business_name", "images", "created_at", "updated_at", ) read_only_fields = ("created_at", "updated_at")