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)
На самом деле это не работает... это просто дает мне

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