from rest_framework import serializers from django.conf import settings from portfolio.models import Category, Portfolio class PortfolioCateSerializer(serializers.ModelSerializer): image = serializers.SerializerMethodField() parent = serializers.StringRelatedField() class Meta: model = Portfolio fields = ['id', 'url', 'image', 'parent', 'created_at', 'updated_at', 'is_active'] def get_image(self, obj): if obj.image: # Sadece path döndür, domain olmadan return obj.image.url return None class CategorySerializer(serializers.ModelSerializer): parent = serializers.StringRelatedField() # ID yerine __str__ metodundaki değeri döndürür image = serializers.SerializerMethodField() portfolio_categories = serializers.SerializerMethodField() # ManyToMany ilişkisi üzerinden portfolio'ları getir class Meta: model = Category fields = ['id', 'title', 'parent', 'is_active', 'created_at', 'updated_at', 'order', 'slug', 'image', 'keywords', 'description', 'portfolio_categories'] def get_image(self, obj): if obj.image: # Sadece path döndür, domain olmadan return obj.image.url return None def get_portfolio_categories(self, obj): """Category'ye ait portfolio'ları döndürür""" portfolios = obj.portfolio_categories.filter(is_active=True).all() # Circular import'u önlemek için PortfolioCateSerializer kullanıyoruz return PortfolioCateSerializer(portfolios, many=True, context=self.context).data class PortfolioSerializer(serializers.ModelSerializer): categories = CategorySerializer(read_only=True, many=True) image = serializers.SerializerMethodField() parent = serializers.StringRelatedField() class Meta: model = Portfolio fields = ['id', 'url', 'categories', 'image', 'parent', 'created_at', 'updated_at', 'is_active'] def get_image(self, obj): if obj.image: # Sadece path döndür, domain olmadan return obj.image.url return None