from django.db import transaction from rest_framework import serializers from core.apps.projects.models.project_estimate import ProjectEstimate from core.apps.projects.serializers.estimate_work import EstimateWorkListSerializer class ProjectEstimateListSerializer(serializers.ModelSerializer): estimate_works = EstimateWorkListSerializer(many=True) class Meta: model = ProjectEstimate fields = [ 'id', 'number', 'name', 'estimate_works' ] class ProjectEstimateCreateSerializer(serializers.Serializer): number = serializers.IntegerField() name = serializers.CharField() def create(self, validated_data): with transaction.atomic(): return ProjectEstimate.objects.create( number=validated_data.get('number'), name=validated_data.get('name'), ) class ProjectEstimateUpdateSerializer(serializers.ModelSerializer): class Meta: model = ProjectEstimate fields = ['name'] def update(self, instance, validated_data): instance.name = validated_data.get('name', instance.name) instance.save() return instance