from rest_framework import serializers from django.conf import settings from .models import Project, Asset, CardLayer class ProjectSerializer(serializers.ModelSerializer): class Meta: model = Project fields = '__all__' class AssetSerializer(serializers.ModelSerializer): file_url = serializers.SerializerMethodField() class Meta: model = Asset fields = '__all__' def get_file_url(self, obj): if obj.file_path: request = self.context.get('request') if request: return request.build_absolute_uri(f'{settings.MEDIA_URL}{obj.file_path}') return f'{settings.MEDIA_URL}{obj.file_path}' return None class CardLayerSerializer(serializers.ModelSerializer): class Meta: model = CardLayer fields = '__all__' class ProjectDetailSerializer(serializers.ModelSerializer): assets = AssetSerializer(many=True, read_only=True) layers = CardLayerSerializer(many=True, read_only=True) class Meta: model = Project fields = '__all__'