from django.db import transaction from rest_framework import serializers from core.apps.finance.models import IncomeMessage class IncomeMessageListSerializer(serializers.ModelSerializer): user = serializers.SerializerMethodField(method_name='get_user') class Meta: model = IncomeMessage fields = [ 'id', 'user', 'message', 'file' ] def get_user(self, obj): return { 'id': obj.user.id, 'full_name': obj.user.full_name, 'profile_image': obj.user.profile_image.url if obj.user.profile_image else None, } class IncomeMessageCreateSerializer(serializers.ModelSerializer): class Meta: model = IncomeMessage fields = [ 'message', 'file', 'chat' ] def create(self, validated_data): with transaction.atomic(): return IncomeMessage.objects.create( message=validated_data.get('message'), file=validated_data.get('file'), user=self.context.get('user'), chat=validated_data.get('chat'), )