Backend Draft
This commit is contained in:
43
backend/projects/serializers.py
Normal file
43
backend/projects/serializers.py
Normal file
@@ -0,0 +1,43 @@
|
||||
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']
|
||||
Reference in New Issue
Block a user