Files
MTCBD/backend/projects/serializers.py
2026-02-23 20:31:53 +05:30

44 lines
1.5 KiB
Python

from rest_framework import serializers
from .models import Project, Task
from accounts.serializers import UserSerializer
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
fields = ['id', 'project', 'title', 'description', 'assigned_to',
'status', 'priority', 'due_date', 'created_at', 'updated_at']
read_only_fields = ['id', 'project', 'created_at', 'updated_at']
from django.contrib.auth import get_user_model
User = get_user_model()
class TaskDetailSerializer(TaskSerializer):
assigned_to = UserSerializer(read_only=True)
assigned_to_id = serializers.PrimaryKeyRelatedField(
source='assigned_to',
queryset=User.objects.all(),
required=False, allow_null=True
)
class Meta(TaskSerializer.Meta):
fields = TaskSerializer.Meta.fields + ['assigned_to_id']
class ProjectSerializer(serializers.ModelSerializer):
task_count = serializers.SerializerMethodField()
class Meta:
model = Project
fields = ['id', 'name', 'description', 'status', 'created_by', 'created_at', 'updated_at', 'task_count']
read_only_fields = ['id', 'created_by', 'created_at', 'updated_at', 'task_count']
def get_task_count(self, obj):
return obj.tasks.count()
class ProjectDetailSerializer(ProjectSerializer):
tasks = TaskSerializer(many=True, read_only=True)
created_by = UserSerializer(read_only=True)
class Meta(ProjectSerializer.Meta):
fields = ProjectSerializer.Meta.fields + ['tasks']