Files
atabackend/portfolio/serializers.py
Beyhan Oğur d50f14bcb1 first commit
2026-04-26 22:20:45 +03:00

59 lines
2.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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