Метод serializer для установки значения атрибута не работает в post-запросе. Я использую Django Rest Framework

У меня есть модель, в которой есть атрибут "transaction_id", который является настраиваемым полем ID, и его значение должно быть вычислено для сохранения в базе данных.

У меня есть модель:

class Transaction(models.Model):
     field = models.IntegerField(default=0)
     transaction_id = models.UUIDField(unique=True)

Это серйоз:

class TransactionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Transaction
        fields = '__all__'
        read_only_fields = ['id', 'transaction_id']

    def set_tn_number(self):
        tn_number = "some_string/"
        #I have to perform some calculation in order to get the relevant value
        tn_number = tn_number + str(10)
        return tn_number

Теперь в моем методе post представления я выполняю следующее:

def post(self, request):
        serializer = TransactionSerializer(data=request.data)
        if serializer.is_valid():
            serializer.tn_number = serializer.set_tn_number()
            serializer.save()
            message = {'message': "Transaction Created Successfully"}
            return Response(message, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Но я все еще получаю ошибку целостности:

NOT NULL constraint failed: transaction_transaction.transaction_id

Может ли кто-нибудь помочь мне с этим?

Спасибо за ваше время

Обновите проверенные данные или передайте необходимые атрибуты модели в метод сохранения как kwargs.

def post(self, request):
    serializer = TransactionSerializer(data=request.data)
    if serializer.is_valid():
        tn_number = serializer.set_tn_number()
        serializer.save(transaction_id=tn_number)
        message = {'message': "Transaction Created Successfully"}
        return Response(message, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Вернуться на верх