from rest_framework import serializers from core.apps.tasks.models.task import Task from core.apps.accounts.serializers.user import ShortUserSerializer from core.apps.tasks.serializers.label import LabelSerializer class TaskSerializer(serializers.ModelSerializer): labels = LabelSerializer(many=True) assignees = serializers.SerializerMethodField(method_name='get_assignees') created_by = serializers.SerializerMethodField(method_name='get_created_by') class Meta: model = Task fields = [ 'id', 'column', 'name', 'description', 'priority', 'from_date', 'to_date', 'labels', 'assignees', 'created_by' ] def get_assignees(self, obj): return ShortUserSerializer(obj.assignees.all(), many=True, context={"request": self.context['request']}).data def get_created_by(self, obj): return ShortUserSerializer(obj.created_by, context={"request": self.context['request']}).data class TaskCreateSerializer(serializers.ModelSerializer): class Meta: model = Task fields = [ 'id', 'column', 'name', 'description', 'priority', 'from_date', 'to_date', 'labels', 'assignees', ] def create(self, validated_data): validated_data['created_by'] = self.context['request'].user return super().create(validated_data)