from rest_framework import serializers from .models import AdventureCategory, AdventureImage, AdventureOffering class AdventureCategorySerializer(serializers.ModelSerializer): class Meta: model = AdventureCategory fields = ("id", "name", "slug", "description") class AdventureImageSerializer(serializers.ModelSerializer): image_url = serializers.SerializerMethodField() class Meta: model = AdventureImage 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 AdventureOfferingSerializer(serializers.ModelSerializer): category = AdventureCategorySerializer(read_only=True) category_id = serializers.PrimaryKeyRelatedField( queryset=AdventureCategory.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 = AdventureImageSerializer(many=True, read_only=True) class Meta: model = AdventureOffering fields = ( "id", "public_id", "title", "description", "meeting_point", "duration_minutes", "capacity", "price_per_person", "is_active", "category", "category_id", "vendor_slug", "vendor_business_name", "images", "created_at", "updated_at", ) read_only_fields = ("created_at", "updated_at")