CreateAPIView перезаписывает POST для вызова функций модели

Я делаю банковскую систему для школьного проекта. Это мой первый опыт работы с APIviews в Django и у меня возникла проблема.

Я хотел бы иметь возможность совершать транзакции между двумя счетами.

У меня есть модель под названием Ledger. В model.py у меня также есть две функции:

CreateTransaction: Является функцией, которая должна POST в таблицу бухгалтерской книги. Как аудит транзакции. Поэтому она создает две строки в базе данных. Одна строка для счета to_account (для аудита кредита) и одна строка для счета from_account (для аудита дебета)

CompleteTransaction: Это функция, которая должна завершить транзакцию. Это означает, что она берет сумму, вычитает ее из счета from_account и добавляет к счету to_account.

class Ledger(models.Model):
    description = models.CharField(max_length=40)
    amount = models.FloatField(null=True)
    t_type = models.CharField(max_length=40)
    account_id = models.IntegerField()
    timestamp = models.DateTimeField(auto_now_add=True)
    customer_id = models.ForeignKey(Customer, on_delete = models.CASCADE, default = None)

    def __str__(self):
        return '{} {} {} {} {} {} {} {}'.format(self.description, self.amount, self.account_id, self.t_type, self.timestamp, self.customer_id, self.transaction)


def CreateTransaction(description, from_acc, to_acc, amount, customer_id):

    legder = Ledger()
    Legder(
        description=description,
        amount=float(amount),
        t_type="CREDIT",
        account_id=to_acc,
        customer_id=customer_id
    )
    legder.customer_id = customer_id
    legder.save()
    Legder(
        description=description,
        amount=float(amount),
        t_type="DEBIT",
        account_id=from_acc,
        customer_id=customer_id
    )
    legder.customer_id = customer_id
    legder.save()


def CompleteTransaction(from_acc, to_acc, amount, fromnew, tonew, customer_id):
    account = Account()
    account.customer_id = Customer.objects.get(id=customer_id)
    customer = Customer.objects.get(id=customer_id)
    bank = Bank.objects.get(id=customer.bank_id)
    account.bank_id = bank.id
    Account.objects.filter(id=from_acc).update(amount=fromnew)
    account.save()
    Account.objects.filter(id=to_acc).update(amount=tonew)
    account.save()

мой сериализатор:

class LedgerSerializer (serializers.ModelSerializer):

    class Meta:
        fields = ('id', 'description', 'amount', 't_type', 'amount', 'timestamp', 'customer_id', 'transaction')
        model = Ledger

Мое представление выглядит следующим образом:

class transaction_action(generics.CreateAPIView):
    serializer_class = LedgerSerializer

    def post(self, request, *args, **kwargs):
        description = request.data["description"]
        amount = request.data["amount"]
        from_acc = request.data["from_acc"]
        to_acc = request.data["to_acc"]
        customer_id = Customer.objects.get(user=self.request.user)
        CreateTransaction(description, from_acc, to_acc, amount, customer_id)
        CompleteTransaction(from_acc, to_acc, amount, fromnew, tonew, customer_id)
        return self.create(request, *args, **kwargs)

На самом деле это не работает... это просто дает мне enter image description here

Как вы видите, в форме сообщения отсутствуют поля to_account и from_account.

помогите мне

Вернуться на верх