from django.db import transaction from rest_framework import serializers from core.apps.finance.models import Expence, ExpenceChat, ExpenceMessage class ExpenceMessageListSerializer(serializers.ModelSerializer): user = serializers.SerializerMethodField(method_name='get_user') class Meta: model = ExpenceMessage 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 ExpenceMessageCreateSerializer(serializers.ModelSerializer): class Meta: model = ExpenceMessage fields = [ 'message', 'file', 'chat' ] def create(self, validated_data): with transaction.atomic(): return ExpenceMessage.objects.create( message=validated_data.get('message'), file=validated_data.get('file'), user=self.context.get('user'), chat=validated_data.get('chat'), )