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', ] extra_kwargs = { "description": {"required": False}, "from_date": {"required": False}, "labels": {"required": False}, "to_date": {"required": False}, } extra_kwargs = { 'labels' : {'required' : False}, 'description' : {'required' : False}, 'from_date' : {'required' : False}, 'to_date' : {'required' : False}, } def create(self, validated_data): validated_data['created_by'] = self.context['request'].user return super().create(validated_data)