Files
Salon/backend/apps/salons/serializers.py

68 lines
1.9 KiB
Python

from django.contrib.auth import get_user_model
from rest_framework import serializers
from apps.salons.models import Review, Salon, SalonPhoto, Service, StaffProfile
User = get_user_model()
class SalonPhotoSerializer(serializers.ModelSerializer):
class Meta:
model = SalonPhoto
fields = ["id", "image_url", "alt_text", "sort_order"]
class ServiceSerializer(serializers.ModelSerializer):
class Meta:
model = Service
fields = ["id", "name", "description", "duration_minutes", "price_amount", "currency", "is_active"]
class StaffSerializer(serializers.ModelSerializer):
name = serializers.SerializerMethodField()
class Meta:
model = StaffProfile
fields = ["id", "name", "title", "bio", "is_active"]
def get_name(self, obj):
return obj.user.display_name
class ReviewSerializer(serializers.ModelSerializer):
customer_name = serializers.SerializerMethodField()
class Meta:
model = Review
fields = ["id", "rating", "comment", "created_at", "customer_name"]
def get_customer_name(self, obj):
return obj.customer.display_name
class SalonSerializer(serializers.ModelSerializer):
class Meta:
model = Salon
fields = [
"id",
"name",
"description",
"address",
"city",
"phone_number",
"email",
"website",
"rating_avg",
"rating_count",
]
class SalonDetailSerializer(SalonSerializer):
photos = SalonPhotoSerializer(many=True, read_only=True)
services = ServiceSerializer(many=True, read_only=True)
staff = StaffSerializer(many=True, read_only=True)
reviews = ReviewSerializer(many=True, read_only=True)
class Meta(SalonSerializer.Meta):
fields = SalonSerializer.Meta.fields + ["photos", "services", "staff", "reviews"]